- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 1
用DEBUG学习汇编语言
一、编写汇编语言有两种主要的方法:
1.使用MASM或TASM等编译器(TASM是borland公司生产的编译器。和turbo系列配套的,在32位的CPU上用);
2.使用调试程序DEBUG.COM学习汇编语言。DEBUG其实并不能算是一个编译器,它的主要用途在于除错,即修正汇编程序中的错误。不过,也可以用来写短的汇编程序,尤其对初学者而言,DEBUG 是最佳的入门工具。因为DEBUG操作容易:只要键入DEBUG回车,A回车即可进行汇编,过程简单,而使用编译器时,必须用到文本编辑器、编译器本身、LINK以及EXE2BIN等程序,其中每一个程序都必须用到一系列相当复杂的命令才能工作,而且用编译器处理源程序,必须加入许多与指令语句无关的指示性语句即伪指令,以供编译器识别。使用 DEBUG 可以避免一开始就碰到许多难以理解的程序行。DEBUG 除了能够汇编程序之外,还可用来检查和修改内存位置、载入储存和执行程序、以及检查和修改寄存器,换句话说,DEBUG是为了让我们接触硬件而设计的。
二、80x86和Pentium微处理器中的寄存器
寄存器(Register)是 CPU 内部的高速存储单元,不同的 CPU 配有不同数量、不同长度的一组寄存器。有些寄存器不面向用户,有些寄存器则面向用户,供编程序用,这些寄存器在程序中频繁使用,被称为可编程寄存器。从原理上分,一般可分为通用寄存器,地址寄存器,控制寄存器,段寄存器。
从应用角度看,可以将寄存器分成以下三类。
(1) 通用寄存器:在 CPU 中数量最多。它们既可以存放数据,又可以存放地址,使用频度非常高,是调度数据的主要手段。其中,累加器的寻址手段最多,功能最强,使用最频繁。
(2) 地址寄存器:主要用来存放地址,用于存储器的寻址操作,因而也称为地址指针或变址寄存器,如堆栈指针、指令指针等。地址寄存器的功能比较单一,在访问内存时,可以通过它形成各种寻址方式。
(3) 标志寄存器:用来保护程序的运行状态,也称为程序状态字寄存器(PSW)。在标志寄存器中,有些标志位反映运算过程中发生的情况,如运算中有无进位或借位,有符号数运算有无溢出等;有些标志位反映运算结果的数字特征,如结果的最高位是否为1、结果是否为 0 等。
累加器
累加器
AH
AL
BH
BL
CL
DH
DL
CH
SP
SI
DI
IP
FLAGS
CS
DS
SS
ES
BP
基址寄存器
计数寄存器
数据寄存器
堆栈指针寄存器
基址指针寄存器
源变址寄存器
目的变址寄存器
指令指针寄存器
标志寄存器
代码段寄存器
段寄存器
附加段寄存器
堆栈段寄存器
数据寄存器
地址指针和
变址寄存器
控制寄存器
通用寄存器
数据段寄存器
图1-1 80x86微处理器的基本结构寄存器
下表是debug中的标志寄存器和cpu中的标志寄存器的不同表示对照:
序号
类别
1
2
3
4
5
6
7
8
9
EFLAG
OF
DF
IF
TF
SF
ZF
AF
PF
CF
DEBUG=1
OV
UP
EI
NG
ZR
AC
PE
CY
DEBUG=0
NV
DN
DI
PL
NZ
NA
PO
NC
标志名称 设置 未设置 标志名称 设置 未设置溢出 OV(溢出) NV(未溢出) 零位 ZR(为0) NZ(不等于零)方向 UP(增加) DN (减少) 辅助进位 AC(有进位)NA(无进位)中断 EI(许可) DI(禁止) 奇偶标志 PE(偶) PO(奇)符号 NG(负) PL(正) 进位 CY (有进位) NC(清除进位)
三、DEBUG常用指令剖析
说明: DEBUG中,数据默认为16进制数,命令采用1个字母。
A (Assemble) 汇编指令1.输入汇编语句被汇编到内存的指定区段,此区段在开始时用A 100 指定。2.所有语句输入完成后,按ENTER键返回。3.完成输入后,可以用U命令观看它的反汇编码 。
格式:-A[起始地址]如果A后无地址,则DEBUG会将DS:100定为起始地址;例A:DEBUG-a 010008F1:0100 MOV DX,10908F1:0102 MOV AH,0908F1:0105 INT 2108F1:0107 INT 2008F1:0109 db May I help you? $08F1:0115 ←离开a状态-g ←运行May I help you ;运行结果Program termin
文档评论(0)