- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机原理与接口技术研究性学习
DEBUG命令及汇编指令调试
指导老师:苏晓星
班级:通信1208班
学号姓名:陈睿哲
1、 学习目的 1
2、 实验环境 1
3、 学习过程 1
3.1、数据传送类指令 1
3.1.1 数据传送指令(MOV) 1
3.1.2 数据交换指令(XCHG) 2
3.1.3 堆栈操作指令(PUSH/POP) 2
3.1.4 查表转换指令(XLAT) 3
3.1.5 地址传送指令(LEA/LDS) 4
3.1.6 标志位传送指令 5
3.1.7 I/0数据传送指令 7
3.2 算数运算类指令 8
3.2.1 加法指令 8
3.2.2减法指令 9
3.2.3乘法指令 10
3.2.4 除法指令 11
3.2.5 BCD码运算调整指令 12
3.3 逻辑运算类指令 14
4、 心得体会 18
学习目的
通过在计算机debug环境下,调试各类指令,实现熟悉80x86的常用指令及功能的目的。
实验环境
64位window 7 DOSBOX 0.74环境
打开Dosbox输入mount c c:\??加载目录到c盘
输入c:\ ?进入到c盘,看到我们已经在c盘,
输入debug,表示打开放在c盘下的debug工具,并输入指令R
启动DEBUG调试程序时,不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器值都设置为0。
学习过程
3.1、数据传送类指令
3.1.1 数据传送指令(MOV)
格式:MOV dst(寄存器、储存器),src(立即数、寄存器、储存器)
功能:源操作数传送至目标单元,源操作数保持不变。
数据传送具有一定方向:
立即数传送至通用寄存器获储存器。
通用寄存器与存储器之间相互传输。
通用寄存器之间相互传送。
通用寄存器与段寄存器(CS不能作为目标)之间相互传送。
储存器与段寄存器(CS不能作为目标)之间相互传送。
调试:
3.1.2 数据交换指令(XCHG)
格式:XCH dst(通用寄存器、储存器),src(通用寄存器、储存器)
功能:源操作数与目标操作数相互交换。
源操作数和目标操作数寻址可以使通用寄存器和存储器,不能使立即数。
应用XCHG指令时应当注意:存储器之间不能直接进行数据交换
调试:
3.1.3 堆栈操作指令(PUSH/POP)
数据进栈指令(PUSH)
格式:PUSH src
功能:先将SP/ESP减2/4修改,然后将源操作数压入SP/ESP指定的位置。高字节数据存放在高地址单元,低字节数据存放在低地址单元。
数据出栈指令(POP)
格式:POP dst
功能:从栈顶弹出操作数送入目的操作数。目的操作数允许为16或32位通用寄存器、存储器和16位段寄存器。当操作数数据类型为字类型,出栈操作使SP加2;当操作数数据类型为双字类型,出栈操作使SP加4。
应用POP/PUSH指令时应当注意:
堆栈不能进行字节操作。
不能用CS作为目标操作数。
堆栈出栈后,并不意味着数据清除,但因为SP指针对它们已不起作用,也就意味着这些数据无意义。
3.1.4 查表转换指令(XLAT)
格式:XLAT
功能:查表得到的字节数据送入AL中。
调试:
3.1.5 地址传送指令(LEA/LDS)
有效地址传送指令(LEA)
格式:LEA dst(通用寄存器),src(储存器寻址)
功能:源操作数的有效地址EA传送到目标。
目标地址传送指令(LDS)
格式:LDS dst,src
功能:将源操作数中存放的地址指针“段基址:偏移地址”的低16位传送到目标通用寄存器中,高16位传送到DS段寄存器中。
源操作数必须是存储器地址,目标操作数为16位通用寄存器。
调试:
3.1.6 标志位传送指令
LAHF ;将标志寄存器的低8位传送到AH寄存器
SAHF ;将AH的低8位数传送到标志寄存器的低8位
PUSHF;标志位寄存器内容进栈
POPF ;将堆栈中弹出的数送标志寄存器
调试:
3.1.7 I/0数据传送指令
输入指令(IN)
格式:IN ac,port
功能:将端口的数据送入CPU累加器。
输出指令(OUT)
格式:OUT port,ac
功能:将CPU累加器中的数据写入端口。
端口地址为 00H 到 FFH,可直接传送,否则要先送到 DX,再送到 ac。
调试:
3.2 算数运算类指令
算术运算类指令包括加、减、乘、除、比较、调整指令,另外还有 BCD 码的运算,这些数可以是无符号数,也可以是有符号数。
3.2.1 加法指令
不带进位的加法指令:
格式:ADD dst,src
功能:目标+源→目标。
调试:
带进位的加法指令:
格式:ADC dst,src
功能:目标+源+CF→目标。
调试:
加1指令:
格式:INC dst
功能:目标+1→目标。
文档评论(0)