汇编语言源程序运行步骤和DEBUG的使用Word格式文档下载.docx
- 文档编号:21930104
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:16
- 大小:55.83KB
汇编语言源程序运行步骤和DEBUG的使用Word格式文档下载.docx
《汇编语言源程序运行步骤和DEBUG的使用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汇编语言源程序运行步骤和DEBUG的使用Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
MOVAH,4CH
CODEENDS
ENDSTART
2.DEBUG调试以下程序,查看DATA段中定义的数据在内存中的存放方式,并单步执行查看每一语句执行后相关寄存器的内容,并解释为何取该值:
DATASEGMENT;
(1)
ADB34H,12H;
(2)
BDW1234H;
(3)
CDD0;
(4)
DDB-1,15/3;
(5)
EDB'
012'
;
(6)
FDW'
AB'
'
C'
(7)
GDW?
;
(8)
HDB5DUP(0);
(9)
IDW$-OFFSETH;
(10)
DATAENDS;
(11)
CODESEGMENT;
(12)
DATA;
(13)
MOVAX,CODE;
(14)
MOVDS,AX;
(15)
MOVBX,SEGA;
(16)
MOVCX,OFFSETB;
(17)
MOVDX,TYPEC;
(18)
MOVAH,4CH;
(19)
INT21H;
(20)
CODEENDS;
(21)
ENDSTART;
(22)
3.下面是第1题采用将主程序定义为远程的程序返回DOS的结束方式,将其编辑、连接、运行,熟悉汇编源程序不同的结束方式。
MAINPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVSI,0
RET
MAINENDP
四、实验报告要求
1.写明本次实验内容和实验步骤。
2.整理出运行正确的各题源程序段和运行结果。
3.小结Debug的使用方法。
实验二DEBUG的使用
一、实验预习要求
1.复习8086指令系统中的数据传送类指令和8086的寻址方式。
2.预习Debug的使用方法:
a)如何启动Debug;
b)如何在各窗口之间切换;
c)如何查看或修改寄存器、状态标志和存储单元的内容;
d)如何输入程序段;
e)如何单步运行程序段和用设置断点的方法运行程序段。
3.按照题目要求预先编写好实验中的程序段。
二、实验任务
1.通过下述程序段的输入和执行来熟悉Debug的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:
MOVBL,08H
MOVCL,BL
MOVAX,03FFH
MOVBX,AX
MOVDS:
[0020H],BX
2.指出下列指令的错误并加以改正,上机验证之。
(1)MOV[BX],[SI]
(2)MOVAH,BX
(3)MOVAX,[SI][DI]
(4)MOVBYTEPTR[BX],2000H
(5)MOVCS,AX
(6)MOVDS,2000H
3.设置各寄存器及存储单元的内容如下:
(BX)=0010H,(SI)=0001H
(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H
(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH
说明下列各条指令执行完后AX寄存器中的内容,并上机验证。
(1)MOVAX,1200H
(2)MOVAX,BX
(3)MOVAX,[0120H]
(4)MOVAX,[BX]
(5)MOVAX,0110H[BX]
(6)MOVAX,[BX][SI]
(7)MOVAX,0110H[BX][SI]
4.设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:
0010H单元中的内容为3333H。
将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:
0010H单元中的内容进行交换。
试编写程序段,并上机验证结果。
三、实验报告要求
1、写明本次实验内容和实验步骤。
2、整理出运行正确的各题源程序段和运行结果。
3、写出第2题中改正后的正确指令。
4、小结Debug的使用方法。
实验三数据传送
1.熟悉8086指令系统的数据传送指令及8086的寻址方式。
2.学会利用Debug调试工具来调试汇编语言程序。
二、实验要求
1.通过编写程序,学会各种寻址方式的使用。
2.继续熟悉使用相关的DEBUG命令单步、断点及连续执行程序,来调试程序。
3.预先编写好程序。
1.《汇编语言与PC技术》书p46页例4.1中五种方法编写的程序加上输出结果的指令序列,即将SS1中数据传送到SS2后,再将SS2中的字符显示输出、具体要求是:
1)为程序LI4_1_1加上按正序将SS2中的字符依次显示出来的指令序列。
2)为程序LI4_1_2加上按逆序将SS2中的字符依次显示出来的指令序列。
3)为程序LI4_1_4加上按正序将SS2中的字符依次显示出来的指令序列。
4)为程序LI4_1_5加上按正序将SS2中的字符依次显示出来的指令序列。
提示:
此题的困难在于SS2是用DW伪指令定义的,而显示字符是一个字节一个字节的显示。
解决此问题的方法有四个:
①直接用SS2[SI]访问,一次取一个字(比如:
MOVDX,SS2[SI]),然后先显示低位字节(DL),再显示(DH)。
即循环执行一次输出两个字符。
②按字节访问字变量,比如用SS2[SI]地址表达式表示SS2中的字节地址,在指令中用PTR操作符将字类型变量SS2按字节访问.例如:
MOVDL,BYTEPTRSS2[SI]
③在数据段中定义SS2的伪指令之前,用LABEL或EQU伪指令为SS2所对应的同一物理位置,另外定义类型为BYTE的标号(例如SS3)。
当你希望按字节访问这片存储器时,就用别这个名字(比如:
MOVDL,SS3[SI])。
④用变量名不出现在地址表达式里的间接访问。
比如[SI]、[BX]、[BX][SI]等地址表达式表示SS2中的字节位移量(例如:
MOVDL,[SI])。
2.把课本例4-1程序LI4_l_l改为SS2在辅助数据段,SS1仍在数据段,将SS1中的字符依次传送至SS2后,按正序显示输出SS2中的字符。
1.提交本次上机调试好的程序。
2.给出运行结果。
3.写出编程、调试体会。
实验四利用堆栈和换码实现传送
1.学会使用堆栈指令PUSH和POP。
2.学会使用换码指令XLAT。
二、实验内容
课本P60页
3.按例4-1的程序LI4_1_5的方法定义SS1,将SS1按字依次推人堆栈,然后按SS1中字符的反序从堆栈中弹出显示输出。
弹出字送入DX,首先显示DL的内容,然后再显示DH的内容。
5.改写例4_6程序。
1)将例4_6改为不存储0,1,2,…,0FH,而用指令计算出这些十六进制数字(比如在DH里计算).然后将其转换成对应的ASCII码,并显示输出。
2)将例4_6改为不存储0,1,2,…,0FH,而直接用CX的值。
CX的值依次为16,15,…,2,1,如果换码表定义为:
TAB_DADB‘FEDCBA9876543210’,则CX-l即为‘0’,‘1’,‘2’,…,‘E’,‘F’在TAB_DA表中相对于表头的位移量。
6.编写一个加密与解密0~9位字序列的程序,设0,1,2,3,4,5,6,7,8,9对应的密码表为9,0,8,2,7,4,6.3,1,5,键盘输入任意一个4位数要求程序能够马上输出这4位数对应的密码。
例如:
键盘输入4925,显示输出7584。
3.写出编程、调试体会
实验五算术运算程序
1.熟悉算术逻辑运算指令和移位指令的功能。
2.了解标志寄存器各标志位的意义和指令执行对它的影响。
1.复习8086指令系统中的算术逻辑类指令和移位指令。
2.按照题目要求在实验前编写好实验中的程序段。
三、实验任务
1.用DEBUG调试以下程序段,将指令对标志位的影响结果填写到以下表格:
标志位
CF
ZF
SF
OF
PF
AF
程序段1:
MOVAX,1018H
MOVSI,230AH
ADDAX,SI
ADDAL,30H
MOVDX,3FFH
ADDAX,BX
MOV[20H],1000H
ADD[20H],AX
PUSHAX
POPBX
程序段2:
MOVAX,0A0AH
ADDAX,0FFFFHMOVCX,0FF00H
ADCAX,CX
SUBAX,AX
INCAX
ORCX,0FFH
ANDCX,0F0FH
MOV[10H],CX
程序段3:
MOVBL,25H
MOVBYTEPTR[10H],4
MOVAL,[10H]
MULBL
2、(课本习题P79页3,7题)
(1)实现多字节二进制减法630B840A90H-436732AF8AH,用DEBUG查看程序结果。
(2)用非压缩型BCD码的减法编写计算:
3621-4203的程序,并显示输出结果。
要求:
数据按低位存放在低地址字节.
数据按高位存放在高地址字节。
实验六、代码转换
一、实验目的:
1.理解各种进制在计算机内的表方法、BCD码和ASCII码的表示方法。
2.熟悉各种常用进制和代码转换的方法。
3.掌握代码转换程序的设计方法,比如:
如何将BCD值转换成ASCII值。
二、实验预习要求:
1、复习各进制数、BCD码和ASCII码的定义形式,理解两者的区别
2、根据本实验的编程提示和程序框架预先编写汇编语言源程序。
1.编写程序:
将键盘输入的4位十进制数(ASCII码)保存为压缩BCD数。
2.编写程序:
从键盘输入一个十进制数,以回车(0DH)结束,将其转换成它所代表的二进制数据,然后以十六进制形式输出。
3.编写程序;
将16位二进制数转换为压缩BCD数。
(高数字位存放在低地址)
1.整理出完整的实验程序,对结果进行解释。
实验七十进制数的输入和输出
1.理解十进制数在计算机中的存放方式。
2.掌握十进制数的输入、输出方法,以及十六进制数的输出方法
1.复习系统功能调用的1、2、9号功能。
2.按照题目要求预先编写好实验中的程序段。
课本习题P79页15题
15.键盘输入一个一位加法表达式。
1)按十进制输出其正确的结果。
7+8=15,2+3=05。
2)按十六进制输出其正确结果。
7+8=0FH,2+3=05H。
1.整理出运行完整的实验程序和运行结果。
2.总结一下,如何输出十六进制数?
与字符输出有什么关系?
3.总结一下,如何输出十进制数?
总结15题加法可能的实现方法。
实验八分支及循环程序设计
1、学习提示信息的显示及键盘输入字符的方法。
2、掌握分支程序和循环程序的设计方法。
1.复习比较指令、转移指令、循环指令的用法。
2.根据编程提示,编出汇编语言源程序。
三、实验内容(课本p98页4,5)
1.给出一组数:
349H,256H,45H,67H,98H,412H,74H,90H,48H,找出其中的最大数、最小数,将结果以十六进制输出。
2.给出一组数:
0FFFFH,3567H,2345H,0002H,0034H,0F045H,将以上数据视为带符号数,找出其中的最大数和最小数,将结果用十六进制输出。
1.整理出完整的实验程序。
2.总结一下编制分支程序和循环程序的要点。
实验九8255A并行接口应用
1.掌握8255A的工作原理以及编程方法。
2.理解8255A在实际中的应用。
1.预习8255A的工作原理;
2.预习8255A的编程方法;
三、实验内容:
某8086微机系统中有一片8255A,其端口A的PA7~PA0接8个开关K7~K0,C口的PC7~PC0接8个发光二极管LED7~LED0。
A口、C口均工作于方式0,要求实现编程,将开关状态K7~K0送入LED7~LED0显示。
已知端口地址:
PA口:
288H,PC口:
28AH,控制口:
28BH
1.编写出完整的实验程序。
2.给出实验结果。
实验十一交通灯模拟实验------8255并行接口实验
一、实验要求:
编写程序,以8255的PA口作为输出口,控制4个双色LED灯(可发红、绿、黄光),模拟十字路口交通灯管理。
二、实验目的:
1、掌握8255的工作原理。
2、学习模拟交通灯控制方法;
三、8255的工作原理:
8255有三个8位的并行口,端口既可以编程为普通I/O口,也可以编程为选通I/O口和双向传输口。
8255为总线兼容型,可以与CPU的总线直接接口。
其中,口地址取决于片选CS和A1、A0。
选择如下:
A1
A0
CS
选通的端口
A口
1
B口
C口
命令口
本实验中8255编程为PB口、PC口、PA口均输出,根据8255状态控制字选择方法。
8255控制字应为90H。
四、接线方案:
五、实验说明:
因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一个十字路口为东西南北走向。
初始状态0南北绿灯通车,东西红灯。
过一段时间转状态1,南北绿灯闪几次转亮黄灯,东西仍然红灯,延时儿秒。
再转状态2,东西绿灯通车,南北红灯。
过一段时间转状态3,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态0。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 源程序 运行 步骤 DEBUG 使用