汇编工具

【常见的基本汇编书籍】

《Windows.环境下32位汇编语言程序设计(第2版)》

《汇编语言编程艺术》

《Intel汇编语言程序设计(第四版)》

《Intel汇编语言程序设计(第五版)范例》

《80x86汇编语言程序设计教程》

《IBM.PC.汇编语言程序设计(第五版)》

 

 《Microsoft MASM手册》

 《Intel® 64 and IA-32 Architectures Software Developer's Manuals》

 


 

回页首

【汇编编译器】

 

MASM32

MASM6.0

NASM-Win32

NASM-DOS

NASM-Linux

TASM5.0

简易MASM附带Turbo Debugger

Windows环境下编写汇编程序的工具 

 


回页首

汇编语言网站 

编程中国 >>技术教程 >> 开发语言 >> 汇编  http://www.bccn.net/Article/kfyy/hb/

 

汇编网  http://www.asmedu.net/

 

80x86汇编小站  www.x86asm.com/

 

AoGo汇编小站  http://www.aogosoft.com/

 

Assembly Language for Intel-BasedComputers  http://kipirvine.com/asm/

 

NASM  http://www.nasm.us/

 

Assembly Language Programming - MASM& Intel Docs  http://web.sau.edu/LillisKevinM/csci240/masmdocs/

 


回页首

一些博客帖子

自己写的一个汇编计算器  http://blog.csdn.net/KingWolfOfSky/archive/2009/11/11/4800028.aspx

Linux汇编语言开发指南  http://blog.csdn.net/KingWolfOfSky/archive/2009/08/09/4427623.aspx

创建Win32图形界面应用程序  http://blog.csdn.net/KingWolfOfSky/archive/2009/08/07/4423958.aspx 

架设WIN32汇编程序的开发环境  http://blog.csdn.net/KingWolfOfSky/archive/2009/07/23/4375411.aspx

 

汇编初学者问题合集  http://blog.csdn.net/mydo/archive/2007/09/07/1776304.aspx 

[幽默机智问答]汇编系列,给初学者  http://topic.csdn.net/u/20080423/21/e1fa715d-9613-4b8d-aa69-58b6f95be894.html

从汇编分析Win32消息原理  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74531.html

用汇编写特殊要求的strlen  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74530.html
8051存储器  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74495.html

8051寻址方式  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74494.html

GCC内联汇编基础  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74493.html
汇编的角度来理解数组与指针  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74390.html
从汇编语言翻译到c语言代码  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74492.html
函数调用得到传递参数的想法  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74491.html

汇编语言写ESMTP电子邮件发送程序  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74529.html

使用Mutex防止程序运行两次  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74489.html

汇编开发的进制输出的程序  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74528.html

汇编实现:接受一个小写字母输出对应大写字母  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74488.html
接受一个小写字母,找出前个字符和后续字符  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74487.html

汇编排序& 查找实例  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74486.html

16位数拆分为4组实例代码 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74485.html

不定参函数实现方法  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74389.html

反汇编破解Radmin密码实例  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74484.html

对话框代码模块源码(汇编)  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyuanma/2009/0316/74555.html

MASM32编程读取网站首页代码  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyuanma/2009/0316/74554.html

Win32汇编读者/写者,写者具有优先权的问题http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74387.html

汇编程序在屏幕显示字符的源代码http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyuanma/2009/0316/74553.html

echo命令基础 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74377.html

”VB“版的汇编环境的配置方法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74527.html

程序转移指令 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74376.html

汇编语言串指令 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74375.html

汇编语言逻辑运算指令 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74374.html

汇编语言算术运算指令 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74373.html

常见修改(机器码) http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74372.html

需要熟练掌握的全部汇编知识http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74371.html

汇编语言经典句式 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74370.html

断点设置表 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74369.html

汇编基础资料速查 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74478.html

用内联汇编判断整数计算是否产生进位借位或溢出http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74477.html

泛型类型的子类及通配符的使用http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74368.html

win32下使用内存映射文件 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74367.html

直接系统服务(Direct System Service)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74366.html

时钟服务(Clock Service——INT 1AH)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74365.html

并行口服务(Parallel Port Service——INT 17H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74364.html

键盘服务(Keyboard Service——INT 16H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74363.html

杂项系统服务(Miscellaneous System Service——INThttp://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74362.html

串行口服务(Serial Port Service——INT 14H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74361.html

直接磁盘服务(Direct Disk Service——INT 13H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74360.html

显示服务(Video Service——INT 10H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74359.html

其它DOS中断 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74358.html

鼠标功能中断INT 33H http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74357.html

时间和日期功能(Time and Date Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74356.html

进程控制功能(Process-Control Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74355.html

系统功能(System Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74354.html

内存分配功能(Memory-Allocation Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74353.html

记录操作功能(FCB)(Record Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74352.html

文件操作功能(FCB)(File Operation Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74350.html

磁盘管理功能(Disk-Management Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74348.html

目录控制功能(Directory-Control Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74347.html

 

字符功能调用类(Character-OrientedFunction)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74346.html

鼠标中断实例学习 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74475.html

断点设置原理 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74345.html

ESP定律手工脱壳方法步骤 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74474.html

汇编中的管道操作方法 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74343.html

汇编进程控制的实现方法 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74342.html

汇编中使用定时器的方法 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74341.html

汇编复杂形状的窗口实例学习http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74340.html

汇编图形界面的操作 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74339.html

控件的子类化 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74338.html

工具栏和状态栏的使用 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74337.html

汇编菜单和加速键 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74336.html

汇编语言中窗口的基本知识 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74335.html

检测不了的错误现象及解决方法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74473.html

汇编基础-对话框和资源文件的使用http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74334.html

Win32汇编程序的结构和语法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74333.html

Win32汇编的环境和基础  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74332.html

常量符号定义方法  http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74331.html 

 


 

回页首

常见的汇编指令

 

 

 

 

一、通用数据传送指令

1、传送指令 MOV (move)

指令的汇编格式:MOV DST,SRC 
指令的基本 功能:(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址。
指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址 方式,这个限制适用于所有指令。
指令的执行对标志位的影响:不影响标志位。
指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器;
目的操作数DST不能是CS,也不能用立即数方式。

2、进栈指令 PUSH (push onto the stack) 
出栈指令 POP (pop from the stack)

指令的汇编格式:PUSH SRC ;POP DST
指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)
POP DST (DST)<-((SP));(SP)<-(SP)
指令支持的寻址方式:push 和 pop指令不能不能使用立即数寻址方式。
指 令对标志位的影响:PUSH 和 POP指令都不影响标志位。
指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2或者 -2;
POP指令的DST不允许是CS寄存器;

3、 交换指令 XCHG (exchange)

指令的汇编格式:XCHG OPR1,OPR2
指令的基本功能: (OPR1)<->(OPR2)
指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。
指令 对标志位的影戏:不影响标志位。
指令的特殊要求:不允许使用段寄存器。

二、累加器专用传送指令 

4、输入指令 IN (input)
输出指令 OUT (output)

指令的汇编格式:IN ac,port port<=0FFH
IN ac,DX port>0FFH
OUT port,ac port<=0FFH
OUT DX,ac port>0FFH
指令的基本功能:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。
IN ac,port port<=0FFH (AL)<-(port)传送字节 或(AX)<-(port+1,port)传送字
IN ac,DX port>0FFH (AL)<-((DX))传送字节 或(AX)<-((DX)+1,(DX))传送字
OUT port,ac port<=0FFH (port)<-(AL)传送字节 或(port+1,port)<-(AX)传送字
OUT DX,ac port>0FFH (DX)<-(AL)传送字节 或((DX)+1,(DX))<-(AX)传送字
指令对 标志位的影响:不影响标志位。
指令的特殊要求:只限于在AL或AX与I/O端口之间传送信息。
传送16位信息用AX,传送8位信息用 AL,这取决于外设端口的宽度。


5、换码指令 XLAT (translate)

指令的汇编格式:XLAT opr 或 XLAT
指令的基本功能:这条指令根据AL寄存器提供的位移量,将BX指使的字节表格中的代码换存在AL中。
(AL)<-((DS)*16+(BX)+(AL))
指 令对标志位的影响:不影响标志位。
指令的特殊要求:所建字节表格的长度不能超过256字节,因为存放位移量的是8位寄存器AL。
opr为 表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr在换码指令中可有可无,有则提高程序的可读性。

三、地址传送指令

6、 有效地址传送器 LEA (load effective address)

指令的汇编格式:LEA reg,src
指令的基本 功能:LEA指令把源操作数的有效地址送到指定的寄存器,这个有效地址是由src选定的一种存储器寻址方式确定的。
指令支持的寻址方式:各种存储 器寻址方式。
指令对标志位的影响:不影响标志位。
指令的特出要求:指令中reg不能是段寄存器;

7、指针送寄存器和DS LDS (load DS with point)
指针送寄存器和ES LES (load ES with point)
指令的汇编 格式:LDS reg,src
LES reg,src
指令的基本功能:LDS和LES指令把确定内存单元位置的偏移地址送寄存器,段地址 DS或ES。这个偏移地址和段地址(也称地址指针)是由src指定的两个相继字单元提供的。
LDS reg,src (reg)<-(src) (DS)<-(src+2)
LES reg,src (reg)<-(src) (ES)<-(src+2)
指令支持的寻址方式:src必须为存储器寻址方式
指令对标志位的影响:不影响标志位。
指令的特 殊要求:指令中REG不能是段寄存器;

四、标志寄存器传送指令

8、标志寄存器的低字节送AH LAHF (load AH with FLAGS)

指令的汇编格式:LAHF
指令的基本功能:(AH)<-(FLAGS)0-7
指令对 标志位的影响:不影响标志位

9、AH送标志寄存器低字节 SAHF(store AHinto FLAGS)

指令的汇 编格式:SAHF
指令的基本功能:(FLAGS)0-7<-(AH)
指令对标志位的影响:由装入值来确定标志位的值。

10、 标志进栈 PUSHF (push the flags)

指令的汇编格式:PUSHF
指令的基本功能: (SP)<-(SP)-2 ((SP)+1,(SP))<-(FLAGS)0-15
指令对标志位的影响:不影响标志位。

11、 标志出栈 POPF (pop the FLAGES)

指令的汇编格式:POPF
指令的基本功能: (FLAGS)0-15<-((SP)+1,(SP)) (SP)<-(SP)+2
指令对标志位的影响:由装入值来确定标志位的值。

[算 术指令]

一、加法指令

12、加法指令 ADD (addition)

指令的汇编格式:add dst,src
指令的基本功能:(dst)<-(src)+(dst)
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。 即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:

SF=1加法结果为负数(符号位为1)
SF=0 加法结果为正数(符号位为0)
ZF=1 加法结果为零
ZF=0 加法结果不为零
CF=1 最高有效位向高位有进位
CF=0 最高有效位向高位无进位
OF=1 两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反。
OF=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。

13、带进为加法指令 ADC (add with carry)

指令的汇编格式:ADD dst,src
指令的基本功能: (dst)<-(src)+(dst)+CF
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外, 源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 加法结果为负数
SF=0 加法结果为正数
ZF=1 加法结果为零
ZF=0 加法结果不为零
CF=1 最高有效位向高位有进位
CF=0 最低有效位相高位无进位
OF=1 两个同符号数相加,结果符号与其相反,
OF=0 两个同符号数相加,或同符号相加,结果符号与其相同

14、加1指令 INC (increament)
指令的汇编格式:INC opr
指令的基本功能:(opr)<-(opr)
指令支持的寻址方式 可以使用除立即数方式外的任何寻址方式
指令对标志位的影响:SF=1 加法结果为负数
SF=0 加法结果为正数
ZF=1 加法结果为零
ZF=0 加法结果不为零
OF=1 两个同符号数相加,结果符号与其相反,
OF=0 两个同符号数相加,或同符号相加,结果符号与其相同。

二、减法指令

15、减法指令 SUB (subtract)

指 令的汇编格式:SUB dst,src
指令的基本功能:(dst)<-(dst)-(src)
指令支持的寻址方式:他们两个操作数 不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1)
SF=0 减法结果为正数(符号位为0)
ZF=1 减法结果为零
ZF=0 减法结果不为零
CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) 
CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)
OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

16、 带借位减法指令 SBB (subtract with borrow)

指令的汇编格式:SBB dst,src
指令的基本功 能:(dst)<-(dst)-(src)-CF
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况 外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1)
SF=0 减法结果为正数(符号位为0)
ZF=1 减法结果为零
ZF=0 减法结果不为零
CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) 
CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)
OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

17、 减1指令 DEC (decrement)

指令的汇编格式:DEC opr
指令的基本功能:(opr)<-(opr)-1
指 令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1)
SF=0 减法结果为正数(符号位为0)
ZF=1 减法结果为零
ZF=0 减法结果不为零
OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

18、 比较指令 CMP (compare)

指令的汇编格式:CMP opr1,opr2
指令的基本功能: (opr1)-(opr2),根据相减结果设置条件码,但不回送结果。
指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数 为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:SF=1 减法结果为负数(符号位为1)
SF=0 减法结果为正数(符号位为0)
ZF=1 减法结果为零
ZF=0 减法结果不为零
CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) 
CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)
OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

19、 求补指令 NEG (negate)

指令的汇编格式:NEG opr 
指令的基本功能:(opr)<- -(opr)
指 令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。
指令对标志位的影响:CF=1 不为0的操作数求补时
CF=0 为0的操作数求补时
OF=1 操作数为-128(字节运算)或操作数为-32768(字运算)
OF=0 当求补运算的操作数不为-128(字节)或-32768(字)时

三、乘法指令

20、无符号乘法指令 NUL (unsigned multiple)
有符号乘法指令 IMUL(signed muliple)

指令的汇编格式:NUL src
IMUL src
指令的基本功能:(AX)<-(AL)*(src)
(DX,AX)<-(AX)*(src)
指 令支持的寻址方式:src可以使用除立即数方式以外的任一种寻址方式。
指令对标志位的影响:乘法指令只影响标志位CF和OF,其他条件码位无定义。
MUL指令的条件码设置为:
CF OF=0 0 乘积的高一半为0(字节操作的(AH)或字操作的(DX))
CF OF=1 1 乘积的高一半不为0
IMUL指令的条件码设置为:
CF OF=0 0 乘积的高一半为低一半的符号扩展.
CF OF=1 1 其他情况
指令的特殊要求:MUL和IMUL指令的区别仅在于操作数是无符号还是带符号数,它们的共同点是,指令中只给出源操作数src,目的操 作数是隐含的,它只能是累加器(字运算为AX,字节运算为AL)。隐含的乘积寄存器是AX或DX(高位)和AX(低位)。


四、符 号扩展指令

21、节扩展为字 CBW (convert byte to word)

指令的汇编格式:CBW
指 令的基本功能:(AH)=00H 当(AL)的最高有效位为0时
(AH)=FFH 当(AL)的最高有效位为1时
指令对标志位的影响:不 影响标志位
指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器或AX寄存器中。

22、字扩展为双 字 CWD (convert word to double word)

指令的汇编格式:CWD
指令的基本功能: (DX)=0000H 当(AX)的最高有效位为0时
(DX)=FFFFH 当(AX)的最高有效位为1时
指令对标志位的影响:不影响标 志位
指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器或AX寄存器中。

五、除法指令

23、 无符号数除法 DIV (unsigned divide)
带符号数除法 IDIV (singed divide)

指令的汇编 格式:DIV src
IDIV src
指令的基本功能:字操作
(AL)<-(AX)/src的商
(AH)<-(AX)/src 的余数
字节操作
(AX)<-(DX,AX)/src的商
(DX)<-(DX,AX)/src的余数
指令支持 的寻址方式:src作为除数,可用除立即数以外的任一种寻址方式来取得。
指令对标志位的影响:不影响条件码。
指令的特殊要求:除法指令要 求字操作时,被除数必须为32位,除数是16位,商和余数是16位的;
字节操作时,被除数必须为16位,除数是8位,得到的商和余数是8位的。

六、 十进制调整指令

[逻辑指令]

一、逻辑运算

24、逻辑与 AND (logic and)

指 令的汇编格式:AND dst,src
指令的基本功能:(dst)<-(dst)与(src)
指令支持的寻址方式:两个操作数不能 同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:指令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0

25、逻辑或 OR (logic or)

指令的汇编格式:OR dst,src
指 令的基本功能:(dst)<-(dst)或(src)
指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况 外,原操作数和目的操作数必须有一个寄存器寻址方式。
指令对标志位的影响:令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0

26、 逻辑非 NOT (logic not)

指令的汇编格式:NOT orc
指令的基本功能:(dst)<-(opr)
指 令支持的寻址方式:除立即数寻址方式以外的其余寻址方式
指令对标志位的影响:对标志位无影响

27、异或 XOR (exclusice or)

指令的汇编格式:XOR dst,src
指令的基本功能:(dst)<-(dst)异或 (src)
指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,原操作数和目的操作数必须有一个寄存器寻址方 式。
指令对标志位的影响:令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0

28、测试指令 TEST

指令的 汇编格式:TEST opr1,opr2
指令的基本功能:(opr1)与(opr2)
指令支持的寻址方式:两个操作数不能同时为存储器寻 址,即为除源操作数为立即数的情况外,源操作数和目的操作数必须有一个寄存器寻址方式。
指令对标志位的影响:令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0

二、移位指令

29、逻辑左移 SHL (shift logical left)

指 令的汇编格式:SHL dst,cnt
指令的基本功能:SHL指令向左逐位移动cnt次,每次逐位移动后,最低位用0来补充,最高位移入CF。
指 令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须 放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。

30、逻辑右移 SHR (shift logical right)

指令的汇编格式:SHR dst,cnt
指令的基本功能:SHR指令向右逐位移动cnt次,每次逐位移动后,最高位用0来补充,最低位移入CF。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位 数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果 设置。

31、算术左移 SAL (shift arithmetic left)

指令的汇编格式:SAL dst cnt
指令的基本功能:SAL指令向左逐位移动cnt次,每次逐位移动后,最低位用0来补充,最高位移入CF。
指令支持的寻址方式:目的 操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指 令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。

32、算术右移 SAR (shift arithmetic right)

指令的汇编格式:SAR dst,cnt
指令的基本功能:SAR指令向右逐位移动cnt次,每次逐位移动后,最高位用符号位来补充,最低位移入CF。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位 数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果 设置。

33、循环左移 ROL (rotate left)

指令的汇编格式:ROL dst,cnt
指令的基本 功能:ROL 对由dst指定的寄存器或存储器操作数左移循环移动cnt所指定的次数,每左移一次,把最高位同时移入CF和操作数最低位。
指令支 持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入 CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。

34、循环右移 ROR (rotate right)

指令的汇编格式:ROR dst,cnt
指令的基本功能:ROR 对由dst指定的寄存器或存储器操作数右移循环移动cnt所指定的次数,每右移一次,把最低位同时移入CF和操作数最高位。
指令支持的寻址方式: 目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt>1时,cnt必须放入CL寄存 器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。

35、带进位的循环左移 RCL (rotate left through carry)

指令的汇编格式:RCL dst,cnt
指令的基本功能:RCL 对由dst指定的寄存器或存储器操作数,连同进位标志CF左循环移动,m所指定的次数,每左移一次,把操作数的最高位移入CF,而CF中原有内容移入操作 数的最低位。
指定支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令 中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值。
OF=1 当cnt=1时,移动后最高位的值未发生变化。
OF=0 当cnt=1时,移动后最高位的值发生变化。
SF、ZF、PF标志位不受影响。

36、 带进位的循环右移 RCR (rotate right through carry)

指令的汇编格式:RCR dst,cnt
指 令的基本功能:RCR 对由dst指定的寄存器或存储器操作数,连同进位标志CF右循环移动,m所指定的次数,每右移一次,把操作数的最高低位移入CF,而CF中原有内容移入操 作数的最高位。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写入指令 中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值。
OF=1 当cnt=1时,操作数最高位的值未发生变化。
OF=0 当cnt=1时,操作数最高位的值发生变化。
SF、ZF、PF标志位不受影响。

[串 处理指令]

一、设置方向标志指令

37、DF置零 CLD (clear directionflag)
DF置 一 STD (set direction flag)

指令的汇编格式:CLD
STD
指令的基本功能:CLD DF=0
STD DF=1

二、串处理指令

38、串传送 MOVSB / MOVSW (move string byte/word)

指 令的汇编格式:MOVSB
MOVSW
指令的基本功能:(ES:DI)<-(DS:SI)
(SI)<-(SI)+/-1(字 节)或+/-2(字)
(DI)<-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:不影响条件码。
指令的特 殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。

39、 存串 STOSB / STOSW (stroe from string byte/word)

指令的汇编格式:STOSB
STOSW
指 令的基本功能:(ES:DI)<-(AL)或(AX)
(DI)<-(DI)+/-1(字节)或+/-2(字)
指令对条件码的 影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。 源串允许使用段跨越前缀来指定段。

40、取串LODSB / LODSW (load from string byte/word)

指 令的汇编格式:LODSB 
LODSW
指令的基本功能:(AL)或(AX)<-(DS:SI)
(SI)<-(SI)+/-1(字 节)或+/-2(字)
指令对条件码的影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的 寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。

41、串比较 CMPSB / CMPSW (compare string byte/word)

指令的汇编格式:CMPSB
CMPSW
指令的基本功能: (DS:SI)-(ES:DI) 根据比较结果设置条件码
(SI)<-(SI)+/-1(字节)或+/-2(字)
(DI)<-(DI)+/-1(字 节)或+/-2(字)
指令对条件码的影响:SF=1 减法结果为负数(符号位为1)
SF=0 减法结果为正数(符号位为0)
ZF=1 减法结果为零
ZF=0 减法结果不为零
CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) 
CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)
OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

三、 循环指令

68、循环 LOOP (loop)
指令的汇编格式:LOOP label
指令的基本功能:① (CX)←(CX)-1
② 若(CX)≠0,则(IP)←(IP)当前+位移量,否则循环结束。
指令的特殊要求:循环指 令都是短转移格式的指令,也就是说,位移量是用8位带符号数来表示的,转向地址在相对于当前IP值的-128 ~+127字节范围之内。

69、 为零/相等时循环 LOOPZ/LOOPE (loopwhile nonzero or equal)
指令的汇编格 式:LOOPNZ/LOOPNE label
指令的基本功能:① (CX)←(CX)-1
② 若ZF=1且(CX)≠0,则(IP)←(IP)当前+位移量,否则循环结束。
指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量 是用8位带符号数来表示的,转向地址在相对于当前IP值的-128 ~+127字节范围之内。

70、不为零/不相等时循环 LOOPNZ/LOOPNE(loop while nonzero or not equal)
指令的汇编格式:LOOPNZ/LOOPNE label 
指令的基本功能:① (CX)←(CX)-1
② 若ZF=0且(CX)≠0,则(IP)←(IP)当前+位移量,否则循环结束。
指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量 是用8位带符号数来表示的,转向地址在相对于当前IP值的-128 ~+127字节范围之内。

 

 


 回页首

CPU常见寄存器介绍

 

 

 

 

32位CPU所含有的寄存器有:
 
4个数据寄存器(EAX、EBX、ECX和EDX)
2个变址和指针寄存器(ESI和 EDI) 2个指针寄存器(ESP和EBP)
6个段寄存器(ES、CS、SS、DS、FS和GS)
1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)

1、数据寄存器

数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些
低16位寄存 器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。

4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄
存 器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字
节的信息。

 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、
 除、输入/输出等 操作,它们的使用频率很高; 
 寄存器BX称为基地址寄存器(BaseRegister)。它可作为存储器指针来使用; 
 寄存器 CX称为计数寄存器(CountRegister)。在循环和字符串操作时,要用它来控制循环次数;在位操作
 中,当移多位时,要用CL来指明 移位的位数; 
 寄存器DX称为数据寄存器(DataRegister)。在进行乘、除运算时,它可作为默认的操作数参与运算,也
 可 用于存放I/O的端口地址。


在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位
寄存器 EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,
所以,这些32位寄存器更具有通用性。

2、变址寄存器

32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响
高16位的数 据。

寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,
用它们可实 现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特
殊的功能。

3、指针寄存器

32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP和SP,对低16位数据的存取,不影
响高16位的 数据。

寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,
用它们可实 现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

它们主要用于访问堆栈内的存储单元,并且规定:
 
 BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;
 SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。

4、段寄存器

段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成
的,这样可用两个较少位数的值组合成一 个可访问较大物理空间的内存地址。

CPU内部的段寄存器:
 
 CS——代码段寄存器(Code Segment Register),其值为代码段的段值;
 DS ——数据段寄存器(Data Segment Register),其值为数据段的段值;
 ES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;
 SS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;
 FS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;
 GS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值。

在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位
微机系统中,它有6个段寄存 器,所以,在此环境下开发的程序最多可同时访问6个段。

32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简
单描述如下:

实方式: 前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑
地址仍为“段值:偏移 量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。
保护方式: 在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。。

5、指令指针寄存器

32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。

指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功
能的系统 中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能
时,不考虑存在指令队列的情况。

在实方式下,由于每个段的最大范围为64K,所以,EIP中的高16位肯定都为0,此时,相当于只用其低16位
的IP来反映程序中指令的执 行次序。

6、标志寄存器

一、运算结果标志位
1、进位标志CF(Carry Flag)
进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最 高位产生了一个进位或借位,那么,其值为1,否则其值为0。

使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。

2、奇偶标志PF(Parity Flag)
奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为 1,否则其值为0。

利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。

3、辅助进位标志AF(Auxiliary Carry Flag)
在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:

(1)、在字操作时,发生低字节向高字节进位或借位时;
(2)、在字节操作时,发生低4位向高4位进位或借位时。

对以上6个运算结果标志位,在一般编程情况下,标志位CF、ZF、SF和OF的使用频率较高,而标志位PF和AF的使用频率较低。

4、零标志ZF(Zero Flag)
零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

5、符号标志SF(Sign Flag)
符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补 码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

6、溢出标志OF(Overflow Flag)
溢出标志OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所 能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

“溢出”和“进位”是两个不同含义的概念,不要混淆。如果不太清楚的话,请查阅《计算机组成原理》课程中的有关章节。

二、状态控制标志位
状态控制标志位是用来控制CPU操作的,它们要通过专门的指令才能使之发生改变。

1、追踪标志TF(Trap Flag)
当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这 种方式主要用于程序的调试。

指令系统中没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。

2、中断允许标志IF(Interrupt-enable Flag)
中断允许标志IF是用来决定CPU是否响应CPU外部的可屏蔽中断发 出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:

(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;

(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

CPU的指令系统中也有专门的指令来改变标志位IF的值。

3、方向标志DF(Direction Flag)
方向标志DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。具体规定在第 5.2.11节——字符串操作指令——中给出。在微机的指令系统中,还提供了专门的指令来改变标志位DF的值。

三、32位标志寄存器增加的标志位
1、I/O特权标志IOPL(I/O PrivilegeLevel)
I/O特权标志用两位二 进制位来表示,也称为I/O特权级字段。该字段指定了要求执行I/O指令的特权级。如果当前的特权级别在数值上小于等于IOPL的值,那么,该I/O指令 可执行,否则将发生一个保护异常。

2、嵌套任务标志NT(Nested Task)
嵌套任务标志NT用来控制中断返回指令IRET的执行。具体规定如下:

(1)、当NT=0,用堆栈中保存的值恢复EFLAGS、CS和EIP,执行常规的中断返回操作;

(2)、当NT=1,通过任务转换实现中断返回。

3、重启动标志RF(Restart Flag)
重启动标志RF用来控制是否接受调试故障。规定:RF=0时,表示“接受”调试故障,否则 拒绝之。在成功执行完一条指令后,处理机把RF置为0,当接受到一个非调试故障时,处理机就把它置为1。

4、虚拟8086方式标志VM(Virtual 8086 Mode)
如果该标志的值为1,则表示处理机处于虚拟的8086方式下的工作状态,否则,处理机处于一般保护方式下的工作状态。

 

 

转载于:https://www.cnblogs.com/Zblogs/p/3261213.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
汇 编 语 言 课程介绍 第1章 预备知识  1.1 汇编语言的由来及其特点   1 机器语言   2 汇编语言   3 汇编程序   4 汇编语言的主要特点   5 汇编语言的使用领域  1.2 数据的表示和类型   1 数值数据的表示   2 非数值数据的表示   3 基本的数据类型  1.3 习题 第2章 CPU资源和存储器  2.1 寄存器组   1 寄存器组   2 通用寄存器的作用   3 专用寄存器的作用  2.2 存储器的管理模式   1 16位微机的内存管理模式   2 32位微机的内存管理模式  2.3 习题 第3章 操作数的寻址方式  3.1 立即寻址方式  3.2 寄存器寻址方式  3.3 直接寻址方式  3.4 寄存器间接寻址方式  3.5 寄存器相对寻址方式  3.6 基址加变址寻址方式  3.7 相对基址加变址寻址方式  3.8 32位地址的寻址方式  3.9 操作数寻址方式的小结  3.10 习题 第4章 标识符和表达式  4.1 标识符  4.2 简单内存变量的定义   1 内存变量定义的一般形式   2 字节变量   3 字变量   4 双字变量   5 六字节变量   6 八字节变量   7 十字节变量  4.3 调整偏移量伪指令   1 偶对齐伪指令   2 对齐伪指令   3 调整偏移量伪指令   4 偏移量计数器的值  4.4 复合内存变量的定义   1 重复说明符   2 结构类型的定义   3 联合类型的定义   4 记录类型的定义   5 数据类型的自定义  4.5 标号  4.6 内存变量和标号的属性   1 段属性操作符   2 偏移量属性操作符   3 类型属性操作符   4 长度属性操作符   5 容量属性操作符   6 强制属性操作符   7 存储单元别名操作符  4.7 表达式   1 进制伪指令   2 数值表达式   3 地址表达式  4.8 符号定义语句   1 等价语句   2 等号语句   3 符号名定义语句  4.9 习题 第5章 微机CPU的指令系统  5.1 汇编语言指令格式   1 指令格式   2 了解指令的几个方面  5.2 指令系统   1 数据传送指令   2 标志位操作指令   3 算术运算指令   4 逻辑运算指令   5 移位操作指令   6 位操作指令   7 比较运算指令   8 循环指令   9 转移指令   10 条件设置字节指令   11 字符串操作指令   12 ASCII-BCD码调整指令   13 处理器指令  5.3 习题 第6章 程序的基本结构  6.1 程序的基本组成   1 段的定义   2 段寄存器的说明语句   3 堆栈段的说明   4 源程序的结构  6.2 程序的基本结构   1 顺序结构   2 分支结构   3 循环结构  6.3 段的基本属性   1 对齐类型   2 组合类型   3 类别   4 段组  6.4 简化的段定义   1 存储模型说明伪指令   2 简化段定义伪指令   3 简化段段名的引用  6.5 源程序的辅助说明伪指令   1 模块名定义伪指令   2 页面定义伪指令   3 标题定义伪指令   4 子标题定义伪指令  6.6 习题 第7章 子程序和库  7.1 子程序的定义  7.2 子程序的调用和返回指令   1 调用指令   2 返回指令  7.3 子程序的参数传递   1 寄存器传递参数   2 存储单元传递参数   3 堆栈传递参数  7.4 寄存器的保护与恢复  7.5 子程序的完全定义   1 子程序完全定义格式   2 子程序的位距   3 子程序的语言类型   4 子程序的可见性   5 子程序的起始和结束操作   6 寄存器的保护和恢复   7 子程序的参数传递   8 子程序的原型说明   9 子程序的调用伪指令   10 局部变量的定义  7.6 子程序库   1 建立库文件命令   2 建立库文件举例   3 库文件的应用   4 库文件的好处  7.7 习题 第8章 输入输出和中断  8.1 输入输出的基本概念   1 I/O端口地址   2 I/O指令  8.2 中断   1 中断的基本概念   2 中断指令   3 中断返回指令   4 中断和子程序  8.3 中断的分类   1 键盘输入的中断功能   2 屏幕显示的中断功能   3 打印输出的中断功能   4 串行通信口的中断功能   5 鼠标的中断功能   6 目录和文件的中断功能   7 内存管理的中断功能   8 读取和设置中断向量  8.4 习题 第9章 宏  9.1 宏的定义和引用   1 宏的定义   2 宏的引用   3 宏的参数传递方式   4 宏的嵌套定义   5 宏与子程序的区别  9.2 宏参数的特殊运算符   1 连接运算符   2 字符串整体传递运算符   3 字符转义运算符   4 计算表达式运算符  9.3 与宏有关的伪指令   1 局部标号伪指令   2 取消宏定义伪指令   3 中止宏扩展伪指令  9.4 重复汇编伪指令   1 伪指令REPT   2 伪指令IRP   3 伪指令IRPC  9.5 条件汇编伪指令   1 条件汇编伪指令的功能   2 条件汇编伪指令的举例  9.6 宏的扩充   1 宏定义形式   2 重复伪指令REPEAT   3 循环伪指令WHILE   4 循环伪指令FOR   5 循环伪指令FORC   6 转移伪指令GOTO   7 宏扩充的举例   8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  10.3 数据转换程序  10.4 文件操作程序  10.5 动态数据的编程  10.6 COM文件的编程  10.7 驻留程序  10.8 程序段前缀及其应用   1 程序段前缀的字段含义   2 程序段前缀的应用  10.9 习题 第11章 数值运算协处理器  11.1 协处理器的数据格式   1 有符号整数   2 BCD码数据   3 浮点数  11.2 协处理器的结构  11.3 协处理器的指令系统   1 操作符的命名规则   2 数据传送指令   3 数学运算指令   4 比较运算指令   5 超越函数运算指令   6 常数操作指令   7 协处理器控制指令  11.4 协处理器的编程举例  11.5 习题 第12章 汇编语言和C语言  12.1 汇编语言的嵌入  12.2 C语言程序的汇编输出  12.3 一个具体的例子  12.4 习题 附录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值