- 1、本文档共153页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Intel处理器指令系统及汇编语言
微机原理及接口技术
第3章 Intel处理器指令系统及汇编语言;操作数的寻址方式
立即寻址 MOV AX,im
直接寻址 MOV AX,DS:[2000H]
寄存器寻址 MOV DS,AX
寄存器间接寻址 MOV AX,[SI]
寄存器相对寻址 MOV AX,DISP[SI]
基址、变址寻址 MOV AX,[BX][SI]
基址、变址、相对寻址 MOV AX,DISP[BX][SI]
隐含寻址 MUL OPRD
转移地址的寻址方式;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;操作数的寻址方式(已讲解V)
转移地址的寻址方式(也就是操作码的寻址)
段内相对寻址 JMP DISP1
段内间接寻址 JMP CX
段间直接寻址 JMP FAR PRT ADD1
段间间接寻址 JMP DWORD PRT [BP][DI]
;数据传送指令
算数运算指令
逻辑运算和移位指令
串操作指令
程序控制指令
处理器控制指令
输入、输出指令;一、 数据传送指令
数据、交换:MOV、XCHG
地址:LEA、LDS、LES
堆栈:PUSH、POP
标志寄存器:LAHF、SAHF、PUSHF、POPF
字节、字转换:CBW、CWD;*;*;*;*;*;*;*;*;LDS指令,LES指令;*;*;*;*;*;*;*;*;*;*;*;*;*;*;二、 算数运算指令
加法:ADD、ADC、INC
减法:SUB、SBB、DEC、NEG、CMP
乘法:MUL(无符号) 、IMUL(带符号)
除法:DIV(无符号) 、IDIV(带符号)
调整:AAA、AAS、AAD、AAM、DAA、DAS;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;逻辑运算和移位指令
逻辑:NOT、AND、TEST、OR、XOR
移位:SAL/SHL、SAR、SHR
循环移位:ROL、ROR、RCL、RCR;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;特点:不丢失任何数据位。
例1:
mov al,40h rol al,1 CF=0
rol al,1 CF=1
rol al,1 CF=0
例2:将一个字节的低4位与高4位进行交换
mov al,26h
rol al,4 ;AL = 62h;例:
mov al,01h ror al,1 CF=1
ror al,1 CF=0;RCL指令:带进位的循环左移
RCR指令:带进位的循环右移
;串操作指令
MOVS、MOVSB、MOVSW
CMPS、CMPSB、CMPSW
SCAS、SCASB、SCASW
LODS、LODSB、LODSW
STOS、STOSB、STOSW
REP
REPE、REPNE;5组处理字节、字和双字数组的指令,称为基本字符串指令,但用法并不限于处理字符数组。;在保护模式程序中,ESI被作为偏移自动地在DS指定的段中寻址;EDI自动地在ES指定的段中寻址。DS和ES总是被设置为同样的值并且无法改变它们。
在实地址模式下,字符串操作指令使用SI和DI寄存器寻址内存。
SI是DS段中的偏移。
DI是ES段中的偏移。
实地址模式下ES和DS经常由ASM程序员改变。
通常在main过程的开始将ES和DS设为同样的段值:;使用重复前缀
字符串操作指令每次只能处理一个内存值。
通过增加一个重复前缀,字符串指令就会使用ECX作为计数器进行重复 —— 实现用一条指令处理整个数组。
可以使用的重复前缀:;使用重复前缀
例:
方向标志:简单字符串指令使用方向标志来决定ESI和EDI是自动增加还是自动减少。
方向标志位 DF=0:ESI、EDI 自动增加;
方向标志位 DF=1:ESI、EDI 自动减少。
方向标志可以通过CLD和STD指令改变:
CLD ; 清除方向标志,即:使DF=0
STD ; 设置方向标志,即:使DF=1;*;*;*;*;*;从ESI指向的内存位置向AL/AX/EAX中装入一个值,同时ESI的值根据方向标志增加或减少。
一般不与REP前缀联合使用。
假设DF=0,则LODSB可替代下面两条指令:
【例】数组乘法: 将双字数组的每个元素同一个常量相乘。;5. 串存储指令;*;*;
例:将string1的每个字节初始化为0FFh。;*;程序控制指令
无条件转移、调用、返回:JMP、CALL、RET
条件转移
JO、JNO、JS、JNS、JC、JNC、JE、JZ、JNE、JNZ、JP、JPE、JNP、JPO
JA、JNBE、JAE、JNB、JB、J
文档评论(0)