好文档 - 专业文书写作范文服务资料分享网站

汇编语言指令汇总

天下 分享 时间: 加入收藏 我要投稿 点赞

汇编语言程序设计资料简汇

通用寄存器

8位通用寄存器8个:AL、AH、BL、BH、CL、CH、DL、DH。 16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。

AL与AH、BL与BH、CL与CH、DL与DH分别对应于AX、BX、CX和DX的低8位与高8位。 专用寄存器

指令指针: IP(16位)。

标志寄存器: 没有助记符(FLAGS 16位)。 段寄存器

段寄存器:CS、DS、ES、SS。

内存分段:80x86采用分段内存管理机制,主要包括下列几种类型的段:

? 代码段:用来存放程序的指令序列。 ? 数据段:用来存放程序的数据。

? 堆栈段:作为堆栈使用的内存区域,用来存放过程返回地址、过程参数等。 物理地址与逻辑地址

? 物理地址:内存单元的实际地址,也就是出现在地址总线上的地址。 ? 逻辑地址:或称分段地址。 ? 段地址与偏移地址都是16位。

? 系统采用下列方法将逻辑地址自动转换为20位的物理地址: 物理地址 = 段地址 × 16 + 偏移地址

? 每个内存单元具有唯一的物理地址,但可由不同的逻辑地址描述。 与数据有关的寻址方式

立即寻址方式

立即寻址方式所提供的操作数紧跟在操作码的后面,与操作码一起放在指令代码段中。立即数可以是8位数或16位数。如果是16位数,则低位字节存放在低地址中,高位字节存放在高地址中。

例:MOV AL,18 指令执行后,(AL)= 12H 寄存器寻址方式

在寄存器寻址方式中,操作数包含于CPU的内部寄存器之中。这种寻址方式大都用于寄存器之间的数据传输。

例3:MOV AX,BX

如指令执行前(AX)= 6789H,(BX)= 0000H;则指令执行后,(AX)= 0000H,(BX)保持不变。

直接寻址方式

直接寻址方式是操作数地址的16位偏移量直接包含在指令中,和指令操作码一起放在代码段,而操作数则在数据段中。操作数的地址是数据段寄存器DS中的内容左移4位后,加上指令给定的16位地址偏移量。直接寻址方式适合于处理单个数据变量。

寄存器间接寻址方式

在寄存器间接寻址方式中,操作数在存储器中。操作数的有效地址由变址寄存器SI、DI或基址寄存器BX、BP提供。

如果指令中指定的寄存器是BX、SI、DI,则用DS寄存器的内容作为段地址。 如指令中用BP寄存器,则操作数的段地址在SS中,即堆栈段。

寄存器相对寻址 该寻址方式是以指定的寄存器内容,加上指令中给出的位移量(8位或16位),并以一个段寄存器为基准,作为操作数的地址。指定的寄存器一般是一个基址寄存器或变址寄存器。 基址加变址寻址方式 在基址加变址寻址方式中,通常把BX和BP看作是基址寄存器,把SI和DI看作变址寄存器,可把两种方式组合起来形成一种新的寻址方式。基址加变址的寻址方式是把一个基址寄存器BX或BP的内容,加上变址寄存器SI或DI的内容,并以一个段寄存器作为地址基准,作为操作数的地址。 当基址寄存器为BX时,段寄存器使用DS,当基址寄存器为BP时,段寄存器用SS。 相对基址变址寻址方式 在相对基址变址寻址方式中,通常把BX和BP看作是基址寄存器,把SI和DI看作变址寄存器。它是把一个基址寄存器BX或BP的内容,加上变址寄存器SI或DI的内容,再加上指令中给定的8位或16位位移量,并以一个段寄存器作为地址基准,作为操作数的地址。 当基址寄存器为BX时,段寄存器使用DS。 当基址寄存器为BP时,段寄存器则用SS。 字符编码 ASCII编码表 BCD编码表 BCD码 0000 0001 0010 0011 0100 0101 0110 0111 十进制数 0 1 2 3 4 5 6 7 BCD码 1000 1001 1010 1011 1100 1101 1110 1111 十进制数 8 9 这6种情况在BCD码中不允许出现 简单I/O功能调用 程序结束退出 键盘输入 显示器输出 MOV AH, 4CH MOV AH, 02H MOV AH, 01H MOV AL,0 INT 21H INT 21H INT 21H 输入的ASCII码在AL中。 要显示的ASCII码在DL中。 伪指令与指令系统 内存分配伪指令 伪指令 DB DW DD 内存单元类型 BYTE WORD DWORD 单元所占字节数 表示范围 1 2 4 -128~255 -32768~65535 -2147483648~4294967295 传送指令类 MOV 传送 LEA 取偏移 LDS/ LES 取偏移及DS/ES LAHF 取标志 SAHF 存标志 PUSH 压入栈 POP 弹出栈 PUSHF/POPF 标志进栈/出栈 IN 端口输入 OUT 端口输出 XCHG 交换 XLAT 查表 算术指令类 ADD 加法 ADC 进位加 INC 加1 SUB 减法 SBB 借位减 DEC 减1 NEG 求补 MUL 无符号乘法 IMUL 有符号乘法 DIV 无符号除法 IDIV 有符号除法 CMP 比较 CBW 字节符号扩展 CWD 字符号扩展 AAA 非压缩十进制加法调整 AAS 非压缩十进制减法调整 AAM 非压缩十进制乘法调整 AAD 非压缩十进制除法调整 DAA 压缩十进制加法调整 DAS 压缩十进制减法调整 逻辑指令类 NOT 逻辑非 AND 逻辑与 OR 逻辑或 XOR 逻辑异或 TEST 位测试 处理机控制指令类 HLT 停机 INT 中断 INTO 溢出中断 IRET 中断返回 LOK 封锁 NOP 空操作 CALL 过程调用 RET 从过程返回 WAIT 等待 CMC 进位标志求反 CLC/STC 进位标志清0/置1 ESC 换码 CLD/STD 方向标志清0/置1 CLI/STI 中断标志清0/置1 移位操作指令类 逻辑 CF移位 算术 CF循环 带进位 CF0不带进位 CF左 dest 0 dest dest dest SHL SHL dest SAL RCL ROL 右 0CF dest CF dest CF dest CF SHR SAR RCR ROR 条件转移指令类 指令操作符 JE JZ JNE JNZ JG JNLE JGE JNL JL JNGE JLE JNG JA JNBE JAE JNB JB JNAE JBE JNA JC JNC JO JNO JP PE JNP JPO JS JNS JCXZ 测试条件 ZF=1 ZF=0 SF⊕ OF=0 SF⊕OF=1 CF∨ZF=0 CF=0 CF=1 CF∨ZF=1 CF=1 CF=0 OF=1 OF=0 PF=1 PF=0 SF=1 SF=0 (CX)=0 说明 等于转 为零转 不等转 非零转 大于等于转 不小于转 小于转 不大于等于转 高于转 不低于等于转 高于等于转 不低于转 低于转 不高于等于转 低于等于转 不高于转 有进位转 无进位转 有溢出转 无溢出转 校验位为偶转 校验位为奇转 符号位为1转 符号位为0转 CX为零转 检查计数器CX 检查单个标志位 用于无符号数 注释 用于有符号数和无符号数 (SF⊕OF)∨ZF=0 大于转 不小于等于转 用于有符号数 (SF⊕OF)∨ZF=1 小于等于转 不大于转 循环指令类 重复前缀指令类 格式 LOOP lab LOOPE lab LOOPZ lab LOOPNZ lab LOOPNE lab 串操作指令类 功能 指令 操作 字节(al)→es:di 修改 (di)±1→di (di)±2→di (si)±1→si (si)±2→si 无 相配前缀 REP 测试条件 (CX)≠0 (CX)≠0 且 ZF=1 (CX)≠0 且 ZF=0 格式 REP指令 REPZ/REPE 指令 REPNZ/REPNE指令 退出条件 (CX)=0 (CX)=0 或者 ZF=0 (CX)=0 或者 ZF=1 串存储 STOSB STOSW 字 (ax)→es:di 串装入 LODSB 字节(ds:si)→al LODSW 字 (ds:si)→ax 串比较 CMPSB 字节(es:di)- (ds:si) (di)±1→di ,(si)±1→si REPZ,REPE CMPW 字 (es:di)- (ds:si) (di)±2→di ,(si)±2→si REPNZ,REPNE 串扫描 SCASB 字节(al)- (ds:si) (si)±1→si (si)±2→si SCASW 字 (ax)-(ds:si) REPZ,REPE REPNZ,REPNE

汇编语言指令汇总

汇编语言程序设计资料简汇通用寄存器8位通用寄存器8个:AL、AH、BL、BH、CL、CH、DL、DH。16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。AL与AH、BL与BH、CL与CH、DL与DH分别对应于AX、BX、CX和DX的低8位与高8位。专用寄存器指令指针:IP(16位
推荐度:
点击下载文档文档为doc格式
1k91f2rabc5s23r4ajm1
领取福利

微信扫码领取福利

微信扫码分享