微机原理与接口技术实验报告.docx

上传人:b****1 文档编号:89722 上传时间:2023-04-28 格式:DOCX 页数:37 大小:237.05KB
下载 相关 举报
微机原理与接口技术实验报告.docx_第1页
第1页 / 共37页
微机原理与接口技术实验报告.docx_第2页
第2页 / 共37页
微机原理与接口技术实验报告.docx_第3页
第3页 / 共37页
微机原理与接口技术实验报告.docx_第4页
第4页 / 共37页
微机原理与接口技术实验报告.docx_第5页
第5页 / 共37页
微机原理与接口技术实验报告.docx_第6页
第6页 / 共37页
微机原理与接口技术实验报告.docx_第7页
第7页 / 共37页
微机原理与接口技术实验报告.docx_第8页
第8页 / 共37页
微机原理与接口技术实验报告.docx_第9页
第9页 / 共37页
微机原理与接口技术实验报告.docx_第10页
第10页 / 共37页
微机原理与接口技术实验报告.docx_第11页
第11页 / 共37页
微机原理与接口技术实验报告.docx_第12页
第12页 / 共37页
微机原理与接口技术实验报告.docx_第13页
第13页 / 共37页
微机原理与接口技术实验报告.docx_第14页
第14页 / 共37页
微机原理与接口技术实验报告.docx_第15页
第15页 / 共37页
微机原理与接口技术实验报告.docx_第16页
第16页 / 共37页
微机原理与接口技术实验报告.docx_第17页
第17页 / 共37页
微机原理与接口技术实验报告.docx_第18页
第18页 / 共37页
微机原理与接口技术实验报告.docx_第19页
第19页 / 共37页
微机原理与接口技术实验报告.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理与接口技术实验报告.docx

《微机原理与接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验报告.docx(37页珍藏版)》请在冰点文库上搜索。

微机原理与接口技术实验报告.docx

微机原理与接口技术实验报告

 

微机原理与接口技术

实验报告

 

学院:

自动化学院

班级:

电092班

姓名:

王蕾

学号:

40963006

 

2011年11月27日

第一部分32位微机原理实验

实验一显示程序实验

一、实验目的

1.掌握在PC机上以十六进制形式显示数据的方法;

2.掌握部分DOS功能调用使用方法;

3.熟悉轻松汇编的调试环境和使用。

二、实验设备

PC微机一台。

三、实验内容

一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。

本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。

实验中可使用DOS功能调用(INT21H)。

(1)显示单个字符输出

入口:

AH=02H

调用参数:

DL=输出字符

(2)显示字符串

入口:

AH=09H

调用参数:

DS:

DX=串地址,’$’为结束字符

(3)键盘输入并回显

入口:

AH=01H

返回参数:

AL=输出字符

(4)返回DOS系统

入口:

AH=4CH

调用参数:

AL=返回码

四、实验程序代码

DATASEGMENT

MESDB'VivalaVida!

',0AH,0DH,'$'

SDDB'b'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES;显示提示信息

MOVAH,09H

INT21H

MOVDI,OFFSETSD

MOVAL,DS:

[DI]

ANDAL,0F0H;取高四位

SHRAL,4

CMPAL,0AH;是否是A以上的数

JBL1

ADDAL,07H

L1:

ADDAL,30H

MOVDL,AL;显示字符

MOVAH,02H

INT21H

MOVAL,DS:

[DI]

ANDAL,0FH;取低四位

CMPAL,0AH

JBL2

ADDAL,07H

L2:

ADDAL,30H

MOVDL,AL;显示字符

MOVAH,02H

INT21H

MOVAX,4C00H;返回DOS

INT21H

CODEENDS

ENDSTART

五、实验调试运行步骤

1.运行轻松汇编软件,按实验流程图编写实验代码,保存并编译,对语法错误进行修改,直至显示“编译成功!

”。

2.单击“生成”按钮,显示“连接成功!

”。

3单击“运行”按钮,查看显示结果是否正确,如果不正确单击“调试”按钮,进行调试。

4.更改DB中的数据,观察程序的正确性(将“0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H”改为“0E3H,0CH,3AH,0F1H,0CDH,01H,4DH,0B6H”,截图见“六、实验运行结果”中所示)。

5.更改DB中的数据,观察程序的正确性(将“a”改为“f”,截图见“六、实验运行结果”中所示)。

六、实验运行结果

实验二数据传送实验

一、实验目的

1.熟悉轻松汇编的调试环境和使用;

2.掌握与数据有关的不同寻址方式。

二、实验设备

PC微机一台。

三、实验内容

将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。

四、实验程序代码

DDATASEGMENT;定义原数据段

MSRDB'hello,word!

$'

LENEQU$-MSR

DDATAENDS

EXDASEGMENT;定义附加数据段

MSDDBLENDUP(?

EXDAENDS

MYSTACKSEGMENTSTACK;定义堆栈段

DW20DUP(?

MYSTACKENDS

CODESEGMENT;定义代码段

ASSUMECS:

CODE,DS:

DDATA,ES:

EXDA

START:

MOVAX,DDATA;装载数据段寄存器

MOVDS,AX

MOVAX,EXDA

MOVES,AX

MOVSI,OFFSETMSR

MOVDI,OFFSETMSD

MOVCX,LEN

NEXT:

MOVAL,[SI];开始传送数据

MOVES:

[DI],AL

INCSI

INCDI

DECCX

JNZNEXT

PUSHES;将附加数据段的内容给数据段

POPDS

MOVDX,OFFSETMSD;显示字符串

MOVAH,9

INT21H;返回DOS

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五、实验调试运行步骤

1.运行轻松汇编软件,按实验流程图编写实验代码,保存并编译,对语法错误进行修改,直至显示“编译成功!

”。

2.单击“生成”按钮,显示“连接成功!

”。

3单击“运行”按钮,查看显示结果是否正确,如果不正确单击“调试”按钮,进行调试。

4.更改DB中的数据,观察程序的正确性(将“hello,world!

”改为“Chinaisgreat!

”,截图见“六、实验运行结果”中所示)。

六、实验运行结果

实验三数码转换程序实验

一、实验目的

掌握不同进制数及编码相互转换的程序设计方法。

二、实验设备

PC微机一台。

三、实验内容

计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。

因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。

计算机与外设间的数码转换关系如下图所示:

1.将ASCII码表示的十进制数转换为二进制数

十进制数可以表示为:

Dn×10n+Dn-1×10n-1+…+D0×100

=Di×10i其中Di代表十进制数1、2、3…9、0。

上式可以转换为:

ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0

由上式可归纳十进制数转换为二进制的方法:

从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。

本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。

2.将十进制数的ASCII码转换为BCD码

本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。

若输入的不是十进制数的ASCII码,则输出“FF”。

提示:

一字节ASCII码取其低四位即变为BCD码。

3.将十六进制数的ASCII码转换为十进制数

十六位二进制数的值域为0-65535,最大可转换为五位十进制数。

五位十进制数可表示为:

ND=D4×104+D3×103+D2×102+D1×10+D0

因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。

本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。

4.BCD码转换为二进制码

本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。

四、实验程序代码

1.将ASCII码表示的十进制数转换为二进制数

DATASSEGMENT

MAXDB11

LENDB?

STRIDB11DUP(?

DATASENDS

EXTRASEGMENT

NUMDB11DUP(?

EXTRAENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,ES:

EXTRA

START:

MOVAX,DATAS;装载数据段寄存器

MOVDS,AX

MOVAX,EXTRA;装载附加段寄存器

MOVES,AX

LEADX,MAX;从键盘上输入字符串

MOVAH,0AH

INT21H

MOVCH,0

MOVCL,LEN;字符串长度给CL

LEASI,STRI;字符串开始偏移地址给SI

XORAX,AX

LEADI,NUM

MOVBL,0FFH

NEXT:

MOVAL,[SI];将字符串的十进制ASCII码转换二进制数存到附加数据段

CMPAL,30H

JBSAVE_TO_ES

CMPAL,39H

JASAVE_TO_ES

SUBAL,30H

MOVBL,AL

SAVE_TO_ES:

MOVES:

[DI],BL

INCDI

INCSI

LOOPNEXT

CALLDISPLAY_FUN

MOVAH,4CH

INT21H

DISPLAY_FUNPROC;将二进制数显示

XORCX,CX

XORAX,AX

LEADI,NUM

MOVCX,05H

X:

XORBX,BX

MOVBL,ES:

[DI]

CMPBL,0FFH

JZDISPLAY_FF

MOVAL,04H

DISPLAY_NORMAL:

SHLBL,1

TESTBL,10H

JNZDISPLAY_IT

MOVDL,30H

JMPDISPLAY_NOW

DISPLAY_IT:

MOVDL,31H

DISPLAY_NOW:

PUSHAX

MOVAH,02H

INT21H

POPAX

DECAL

JNZDISPLAY_NORMAL

JMPDISPLAY_END

DISPLAY_FF:

MOVDH,2

DISPLAY_FF_LOOP:

MOVDL,46H

MOVAH,02H

INT21H

DECDH

JNZDISPLAY_FF_LOOP

DISPLAY_END:

INCDI

LOOPX

RET

DISPLAY_FUNENDP

CODESENDS

ENDSTART

2.将十进制数的ASCII码转换为BCD码

DATASEGMENT

STRINGDB'INPUT:

','$'

STRING1DB'OUTPUT:

','$'

MSRDB6,?

6DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,STRING

MOVAH,09H

INT21H

MOVDX,OFFSETMSR

MOVAH,0AH

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

MOVDL,0DH

MOVAH,02H

INT21H

LEADX,STRING1

MOVAH,09H

INT21H

MOVCL,[MSR+1]

MOVSI,0002H

MOVBX,OFFSETMSR

A1:

MOVAL,[BX+SI]

CMPAL,40H

JNCB1

SUBAL,30H

MOVCH,0

PUSHCX

MOVCL,4

MOVDH,AL

SHLDH,CL

A2:

ROLDH,1

MOVDL,DH

ANDDL,01H

ADDDL,30H

MOVAH,02H

INT21H

DECCL

JNZA2

POPCX

INCSI

DECCL

JNZA1

B1:

JZB2

MOVDL,46H

MOVAH,02H

INT21H

INCSI

DECCL

JNZA1

B2:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

3.将十六进制数的ASCII码转换为十进制数

DATASSEGMENT

STRIDB'FFFF'

MEMDB25DUP(?

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS

MOVDS,AX

LEASI,STRI

LEADI,MEM

MOVCX,4

XORAX,AX

GET_STR:

;将数据以二进制形式保存到MEM中

MOVAL,[SI];取一个字节

CMPAL,39H

JAABOVE;如果为十以上的数字,跳转到ABOVE

SUBAL,30H

JMPINC_REG

ABOVE:

SUBAL,37H

INC_REG:

MOV[DI],AL

INCSI

INCDI

LOOPGET_STR

MOVCX,3;将mem中的数据每位的ASCII码保存

LEADI,MEM

MOVAL,[DI]

MOVAH,0

MOVBX,10H

MUL_10H:

MULBX

INCDI

ADDAL,[DI]

ADCAH,0

LOOPMUL_10H

LEADI,MEM

;/10000

XORDX,DX

MOVBX,10000

DIVBX

ADDAX,30H

MOV[DI+5],AL

MOVAX,DX

;/1000

XORDX,DX

MOVBX,1000

DIVBX

ADDAX,30H

MOV[DI+6],AL

MOVAX,DX

;/100

XORDX,DX

MOVBX,100

DIVBX

ADDAX,30H

MOV[DI+7],AL

MOVAX,DX

;/10

XORDX,DX

MOVBX,10

DIVBX

ADDAX,30H

MOV[DI+8],AL

;/1

ADDDX,30H

MOV[DI+9],DL

;DISPLAY

MOVCX,5

PLAY_LOOP:

;显示

MOVDL,[DI+5]

MOVAH,02H

INT21H

INCDI

LOOPPLAY_LOOP

MOVAH,4CH;返回DOS

INT21H

CODESENDS

ENDSTART

4.BCD码转换为二进制码

DATASSEGMENT

STRIDB13H,21H,18H,31H;分别对应十进制数13?

21,18?

31的BCD码

MEMDB20DUP(?

DATASENDS

;STACKSSEGMENT

;STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS;,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

LEASI,STRI

LEADI,MEM

XORAX,AX

MOVBX,04H

 

ZHUANHUAN:

MOVCX,2

MOVAL,[SI];取一个字节

C1:

ROLAL,4;每次循环四位,求对应的ASCII码,保存到MEM单元

MOVDH,AL

ANDDH,0FH

ADDDH,30H

MOV[DI],DH

INCDI

LOOPC1

INCSI

DECBX

JNZZHUANHUAN

MOVCX,8;送屏幕显示

LEADI,MEM

XIANSHI:

MOVBX,2

C2:

MOVDL,[DI]

MOVAH,02H

INT21H

INCDI

DECBX

JNZC2

MOVDL,0AH;显示空格

MOVAH,02H

INT21H

LOOPXIANSHI

 

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

五、实验调试运行步骤

1.运行轻松汇编软件,按实验流程图编写实验代码,保存并编译,对语法错误进行修改,直至显示“编译成功!

”。

2.单击“生成”按钮,显示“连接成功!

”。

3单击“运行”按钮,查看显示结果是否正确,如果不正确单击“调试”按钮,进行调试。

4.更改DB中的数据,观察程序的正确性,截图见“六、实验运行结果”中所示

六、实验运行结果

1.将ASCII码表示的十进制数转换为二进制数

2.将十进制数的ASCII码转换为BCD码

3.将十六进制数的ASCII码转换为十进制数

4.BCD码转换为二进制码

实验四运算类程序实验

一、实验目的

1.掌握运算类指令编程及调试方法;

2.掌握运算类指令对各状态标志位的影响及测试方法。

二、实验设备

PC微机一台。

三、实验内容

80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对下表所示的数据类型进行算术运算。

1.二进制双精度加法运算

.本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。

实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。

由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。

在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。

2.十进制数的BCD码减法运算

本实验要求计算X-Y=Z,其中,X、Y、Z为BCD码,其中X=0400H,Y=0102H。

四、实验程序代码

二进制双精度加法运算

DATASSEGMENT

STRIDB13H,21H,18H,31H;分别对应十进制数13?

21,18?

31的BCD码

MEMDB20DUP(?

DATASENDS

;STACKSSEGMENT

;STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS;,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

LEASI,STRI

LEADI,MEM

XORAX,AX

MOVBX,04H

 

ZHUANHUAN:

MOVCX,2

MOVAL,[SI];取一个字节

C1:

ROLAL,4;每次循环四位,求对应的ASCII码,保存到MEM单元

MOVDH,AL

ANDDH,0FH

ADDDH,30H

MOV[DI],DH

INCDI

LOOPC1

INCSI

DECBX

JNZZHUANHUAN

MOVCX,8;送屏幕显示

LEADI,MEM

XIANSHI:

MOVBX,2

C2:

MOVDL,[DI]

MOVAH,02H

INT21H

INCDI

DECBX

JNZC2

MOVDL,0AH;显示空格

MOVAH,02H

INT21H

LOOPXIANSHI

 

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

十进制数的BCD码减法运算

STACKSSEGMENTSTACK;堆栈段

DW128DUP(?

);注意这里只有128个字节

STACKSENDS

DATASSEGMENT;数据段

;请在这里定义您的数据

XDW0400H

YDW0102H

ZDW?

DATASENDS

CODESSEGMENT;代码段

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS;初始化

MOVDS,AX

;请在这里添加您的代码

LEASI,X

LEADI,Y

LEABX,Z

CLC

MOVCX,2

L1:

MOVAL,BYTEPTR[SI]

SBBAL,BYTEPTR[DI]

AAS

MOVBYTEPTR[BX],AL

INCSI

INCDI

INCBX

DECCX

JNZL1

MOVBX,Z

CALLDISPLAY1

MOVAX,4C00H;退出程序

INT21H

DISPLAY1PROC

MOVCX,16

C2:

ROLBX,1

MOVDL,BL

ANDDL,01H

ADDDL,30H

MOVAH,02H

INT21H

LOOPC2

RET

DISPLAY1ENDP

CODESENDS

ENDSTART

 

五、实验调试运行步骤

1.运行轻松汇编软件,按实验流程图编写实验代码,保存并编译,对语法错误进行修改,直至显示“编译成功!

”。

2.单击“生成”按钮,显示“连接成功!

”。

3单击“运行”按钮,查看显示结果是否正确,如果不正确单击“调试”按钮,进行调试。

4.更改DB中的数据,观察程序的正确性,截图见“六、实验运行结果”中所示。

六、实验运行结果

实验五分支程序设计实验

一、实验目的

掌握分支程序的设计方法。

二、实验设备

PC微机一台。

三、实验内容

程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如下图所示。

本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。

实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。

在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。

当循环结束操作时,将BH,BL分别送屏幕显示。

参考实验流程如下图所示。

四、实验程序代码

DATASEGMENT

MESDB0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETMES

MOVCX,7;将缓存区的变量最大值放入AH,最小值放入AL

MOVBL,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2