微机原理与接口技术实验教案Word文档格式.docx
《微机原理与接口技术实验教案Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验教案Word文档格式.docx(40页珍藏版)》请在冰豆网上搜索。
AH=4CH
AL=返回码
实验步骤
(1)运行Tdpit软件,选择文件菜单,点击新建,进入一个源文件编辑界面。
根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1所示。
(2)使用编译菜单中的编译和链接对实验程序进行汇编、连接。
(3)使用编译菜单中的运行,运行程序,观察运行结果。
(4)使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。
(5)更改数据区中的数据,检查程序的正确性。
参考程序清单
DATASEGMENT
MESDB'
Showaashex:
'
0AH,0DH,'
$'
SDDB'
a'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES;
显示提示信息
MOVAH,09H
INT21H
MOVDI,OFFSETSD
MOVAL,DS:
[DI]
ANDAL,0F0H;
取高4位
SHRAL,4
图1
CMPAL,0AH;
是否是A以上的数
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;
显示字符
MOVAH,02H
INT21H
ANDAL,0FH;
取低4位
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVAX,4C00H;
返回DOS
CODEENDS
ENDSTART
数据传送实验
实验目的
(1)熟悉Tdpit集成环境和调试器的使用。
(2)掌握与数据有关的不同寻址方式。
实验内容
本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
实验步骤
(1)运行Tdpit软件,选择文件菜单,点击新建进行实验程序的编写。
(2)使用编译菜单中的编译和连接对实验程序进行汇编、连接。
(5)更改数据区中的数据,考察程序的正确性。
参考程序:
DDATASEGMENT;
定义源数据段
MSRDB"
HELLO,WORLD!
$"
LENEQU$-MSR
DDATAENDS
EXDASEGMENT;
定义附加数据段
MSDDBLENDUP(?
)
EXDAENDS
MYSTACKSEGMENTSTACK;
定义堆栈段
DW20DUP(?
MYSTACKENDS
CODESEGMENT;
定义代码段
ASSUMECS:
DDATA,ES:
EXDA
MOVAX,DDATA
MOVDS,AX;
装载数据段寄存器
MOVAX,EXDA
MOVES,AX;
装载附加数据段寄存器
MOVSI,OFFSETMSR;
设置SI
MOVDI,OFFSETMSD;
设置DI
MOVCX,LEN
NEXT:
MOVAL,[SI];
开始传输数据
MOVES:
[DI],AL
INCSI
INCDI
DECCX
JNZNEXT
PUSHES
POPDS;
将附加段寄存器指向的段值赋给数据段寄存器
MOVDX,OFFSETMSD
MOVAH,9
INT21H
MOVAX,4C00H;
利用DOS功能调用返回DOS状态
将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:
MOVBX,0
MOVAL,MSR[BX]
MSD[BX],AL
INCBX
LOOPNEXT
运算类程序实验
(1)掌握运算类指令编程及调试方法。
(2)掌握运算类指令对各状态标志位的影响及测试方法。
实验内容及说明
80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表1所示的数据类型进行算术运算。
表1
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。
3.乘法运算
本实验要求实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,被乘数为54320H,乘数为3H,运算结束后,将乘积在屏幕上显示。
4.用减奇数开平方运算
80x86指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。
用减奇数法可求得近似平方根,获得平方根的整数部分。
我们知道,N个自然数中的奇数之和等于N2,即:
1+3+5=9=32
1+3+5+7=16=42
1+3+5+7+9+11+13+15=64=82
若要做S的开方运算,那麽就可以从S中逐次减去自然数中的奇数1,3,5,7…,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。
本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。
(1)运行Tdpit软件,选择文件菜单进行实验程序的编写。
参考程序
两个字节数据相加
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
MES1DB'
Theresultis:
XDB03H
YDB05H
DATAENDS
CODESEGMENT
ASSUMECS:
DATA
MOVAX,DATA
MOVDS,AX
MOVAH,00H
MOVSI,OFFSETX
MOVAL,[SI]
ADDAL,[SI+01H]
ANDAL,0FH
MOVBL,AL
MOVDX,OFFSETMES1
MOVAH,09H
INT21H
MOVAX,BX
CALLSHOW
MOVAX,4C00H
SHOWPROCNEAR
MOVAL,BL
取高4位
SHRAL,4
是否是A以上的数
JBC2
ADDAL,07H
ADDAL,30H
showcharacter
MOVAH,02H
取低4位
CMPAL,0AH
JBC3
ADDAL,07H
RET
ENDP
CODEENDS
ENDSTART
;
A4-1.asm
二进制双精度加法运算
DATASEGMENT
XLDW65A0H
XHDW0015H
YLDW0B79EH
YHDW0021H
MOVAX,DATA
MOVDS,AX
MOVAX,XL
ADDAX,YL
MOVBX,AX
MOVAX,XH
ADCAX,YH
PUSHBX
CALLSHWORD
POPBX
MOVAX,BX
CALLSHWORD
SHWORDPROCNEAR
MOVBL,AH
MOVBL,AL
RET
ENDP
SHOWPROCNEAR
PUSHAX
PUSHDX
POPDX
POPAX
A4-2.asm
十进制数的BCD码减法运算
XDW0400H
YDW0102H
MOVAH,00H
SAHF
SBBAL,[SI+02H]
DAS
PUSHF
ANDAL,0FH
POPF
INCSI
MOVBH,AL
A4-3.asm
乘法运算
ERRMESDB'
Errorexist!
DATA1DB00H,02H,03H,04H,05H
DATA2DB03H
RESULTDB06HDUP(0)
MOVSI,OFFSETDATA2
MOVBL,[SI]
ANDBL,0FH
CMPBL,09H
JNCERROR
MOVSI,OFFSETDATA1
MOVDI,OFFSETRESULT
MOVCX,0005H
A1:
MOVAL,[SI+04H]
ANDAL,0FH
CMPAL,09H
JNCERROR
DECSI
MULBL
AAM
ADDAL,[DI+05H]
AAA
MOV[DI+05H],AL
DECDI
MOV[DI+05H],AH
LOOPA1
MOVCX,06H
MOVSI,OFFSETRESULT
A2:
MOVDL,20H
LOOPA2
ERROR:
MOVDX,OFFSETERRMES
[SI]
ENDSTART
A4-4.asm
用减奇法开平方运算
DDATASEGMENT
Thesquarerootof$'
MES2DB'
is:
NUMBDW0040H
DDATAENDS
CODE,DS:
DDATA
MOVAX,DDATA
MOVSI,OFFSETNUMB
MOVAX,[SI]
MOVDX,OFFSETMES2
MOVAX,[SI]
MOVCL,00H
MOVDX,0001H
SUBAX,DX
JBA2
INCCL
ADDDX,02H
JMPA1
MOVBL,CL
ENDSTART
分支程序设计实验
掌握分支程序的设计方法。
程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图1所示。
本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。
图1图2
实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。
在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。
当循环结束操作时,将BH,BL分别送屏幕显示。
参考实验流程如图2所示。
(1)运行Tdpit软件,选择文件菜单编写实验程序;
提供8字节的数据:
0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H。
(4)更改数据区中的数据,考察程序的正确性。
A5.asm
Theleastnumberis:
MES2DB0AH,0DH,'
Thelargestnumberis:
NUMBDB0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H
DDATA
MOVSI,OFFSETNUMB
MOVCX,0008H
JCXZA4
MOVBH,[SI]
MOVBL,BH
LODSB;
AL=DS:
[SI],SI=SI+1
CMPAL,BH
JBEA2
JMPA3
CMPAL,BL
JAEA3
MOVBL,AL
A3:
LOOPA1
A4:
MOVDX,OFFSETMES1;
showmes1
INT21H
MOVAL,BL;
showtheleastnumber
ANDAL,0F0H;
getthehighest4bits
CMPAL,0AH
MOVDL,AL;
ANDAL,0FH;
getthelowest4bits
MOVDX,OFFSETMES2;
showmes2
MOVAL,BH;
showthelargestnumber
JBC22
ADD