8086汇编语言上机调试及基本操作文档格式.docx
《8086汇编语言上机调试及基本操作文档格式.docx》由会员分享,可在线阅读,更多相关《8086汇编语言上机调试及基本操作文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
8
日
提交时间:
2014.10.15
1、实验目的:
(1)掌握常用DEBUG命令:
G,D,R,T,U,Q。
(2)掌握工具软件EMU8086。
(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
(4)掌握简单的数值转换算法
2、实验说明:
计算机中的数值有各种表达方式,这是计算机的基础。
掌握各种数制之间的转换是一种基本功。
3、程序框图:
对于0-999(即000H-3E7H)范围内的二进制数
4、参考程序:
;
将AX中的三位数拆为三个BCD码,并存入Result开始的三个单元
DATA
SEGMENT
;
数据段
RESULT_1
DB
1
RESULT_2
RESULT_3
ENDS
STACK
SEGMENTSTACK
堆栈段
STA
64DUP(0)
STACK_TOP
0
CODE
代码段
ASSUMECS:
CODE,DS:
DATA,
ES:
DATA,SS:
START:
MOV
AX,DATA
DS,AX
设置数据段
AX,STACK
SS,AX
设置堆栈段
LEA
SP,STACK_TOP
设置栈顶指针
AX,2afH
CL,100
DIV
CL
RESULT_1,AL
除以100,得百位数
AL,AH
AH,0
CL,10
RESULT_2,AL
余数除以10,得十位数
RESULT_3,AH
余数为个位数
AX,4C00H
返回DOS
INT
21H
ENDS
END
START
最后一行要按回车键
5、实验步骤
1)用EDIT编写源文件(在EDIT下不能用中文注释)。
2)在DOS窗口下
①、在DOS下编译、连接生成可执行文件。
②、在debug下调试该可执行文件,使用-U反汇编语句查看程序,找到指令结束地址。
③、使用-t单步执行命令
④、找到指令结束地址,使用-gcs:
0027执行指令。
⑤、使用dds:
0000查看数据段内的数据
2)Windows下
①、打开emu8086,新建一个exe文件,编辑程序
②、点击Compile对程序编译及链接,存储为example.exe文件。
③、点击run,进行仿真
6、实验结果:
1)用合适的编辑软件编辑以上源文件并存入合适目录;
要求补充注释未注释的伪指令和指令;
1
结果1是低八位,初始量为’1’
结果1是低八位
结束数据段
64DUP(0);
堆栈段初始化
0
栈顶初始化
结束堆栈段
假定伪指令
AX,DATA
把具体的DATA送至寄存器中
AX,STACK
把STACK送至寄存器中
AX,2afh
把立即数2afh送至寄存器
被除数为100
8位寄存器
余数为下一个除数
高8位清零
被除数是10
8位寄存器
余数是个位数
结束代码段
START
最后一行按回车键
2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环境下生成的机器码的长度和内容;
试指出第2、5、7、10、14条指令的IP和机器码。
两个环境生成的机器码的长度和内容如5实验步骤中所示,第2、5、7、10、14条指令的IP和机器码如下表所示:
DOS
Windows
指令
IP
机器码
2
0003
8ED8
5
000A
8D264100
BC4000
7
0011
B164
0010
10
0018
8AC4
0017
14
0020
A20100
001F
3)分别在debug和emu8086下调试该可执行文件,给出程序运行时的各段地址(CS=?
,DS=?
SS=?
ES=?
)举例说明debug的t,d,g,u等命令操作方法并对寄存器的变化作出解释;
试改变被转换的三位数,并解释转换过程中标志寄存器中各标志位的结果;
如何观察转换结果的变化?
①、debug和emu8086调试可执行文件的各段地址:
段地址
debug
emu8086
CS
1433
0716
DS
142D
0700
SS
142E
0711
ES
141D
②、举例说明debug的t,d,g,u等命令操作方法并对寄存器的变化作出解释:
见5操作步骤部分。
③、试改变被转换的三位数,并解释转换过程中标志寄存器中各标志位的结果;
将2afH转换为355H:
2afH
355H
NV
无溢出
UP
串操作指令为自动增量指令
EI
允许中断请求
PL
符号为正
NZ
运算结果不为零
NA
辅助进位无进位
PO
1的个数为奇数
NC
无进位
7、实验总结
通过本次上机实验,初步了解了DOS环境下的EDIT、LINK、DEBUG和WINDOWS下的emu8086工具,且在计算机上进行了将0—999的二进制转换为十进制。
分别在DOS和Windows下编译、连接生成可执行文件并调试。
懂得了在DOS下使用dubug的U、T、D、G、R、Q命令,知道了在两种环境下的各类地址、标志及变量等的查看。
通过比较两种环境下的工具,发现开发汇编语言时,使用WINDOWS下的集成开发软件emu8086会更加的方便和有效率。
8、思考题:
1)用单步执行命令t运行程序,运行到movax,4c00h,int21h指令后,cs和IP寄存器内容前后有何变化?
产生变化的原因是什么?
CS由1433变为00A7,IP由002A变为107C。
原因是处理器用CS寄存器和IP寄存器中得内容组成的逻辑地址取下一条要执行的指令。
2)试写出将BCD转换成二进制码的汇编程序。
定义数据段
为符号RESULT_1保留一个字节
定义数据段结束
定义堆栈段
64DUP(0)
将指针为64的字节数推入堆栈
设置栈顶指针为0
堆栈段定义结束
定义代码段
STACK
规定CS,DS,EX和SS的内容
DS初始化为DATA
SS初始化为STACK
BIN2BCDPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
现场保护
MOVCX,3
16位二进制码转换成压缩BCD码最多需要3个字节
RE:
SUBDX,DX
清零
DIVWORDPTR0AH
AX除于10
MOVBL,DL
将余数保存,因为DL=DX
DX清零
DIVWORDPTR0AH
SHLDL,4
抬到高位
ORBL,DL
压缩BCD码
MOV[DI],BL
保存压缩BCD码
INCDI
准备保存下一个
DECCX
计数
JNERE
重复
POPDI
POPDX
POPCX
POPBX
POPAX
RET
目标指向21H
代码段结束