IBM-PC汇编语言常用指令、符号、原理、考点大全要点.pdf
《IBM-PC汇编语言常用指令、符号、原理、考点大全要点.pdf》由会员分享,可在线阅读,更多相关《IBM-PC汇编语言常用指令、符号、原理、考点大全要点.pdf(21页珍藏版)》请在三一文库上搜索。
1、咖啡综合整理 1 汇编语言复习资料整理 第二章 1、寄存器组 (1)通用寄存器 数据寄存器 EAX (32 位) AX(16 位) AH(8 位) (高位) AL(8 位) (低位)累加器 EBX (32 位) BX(16 位) BH(8 位) (高位) BL(8 位) (低位)基址变址 ECX (32 位) CX(16 位) CH(8 位) (高位) CL(8 位) (低位)计数器 EDX (32 位) DX(16 位) DH(8 位) (高位) DL(8 位) (低位)数据 指针或变址寄存器 ESP (32 位) SP(16 位)堆栈指针寄存器 EBP (32 位) BP(16 位)基址指
2、针寄存器 EDI(32 位) DI (16 位)目的变址寄存器 ESI(32 位) SI (16 位)源变址寄存器 (2)专用寄存器 EIP(32 位) IP (16 位)指令指针寄存器 EFLAGS (32 位) FLAGS(16 位)标志寄存器 ESP (32 位) SP (16 位)堆栈指针寄存器 2、标志位的符号表示、 标志位标志为 1 标志为 0 OF溢出(是 / 否)OV NV DF方向(减量 / 增量)DN UP IF中断(允许 / 关闭)EI DI SF符号(负 / 正)NG PL ZF零(是 / 否)ZR NZ AF辅助进位(是/ 否)AC NA PF奇偶(偶 / 奇)PE
3、PO CF进位(是 / 否)CY NC 3、段寄存器 咖啡综合整理 2 CS (16 位)代码段 DS (16 位)数据段 SS(16 位)堆栈段 ES (16 位)附加段 4、段寄存器和相应存放偏移地址的寄存器之间的默认组合 段偏移 CS IP SS SP或 BP DS BX 、DI、SI 或一个 16 位数 ES DI(用于串指令) 第三章 1、七种寻址方式(举例) 立即寻 MOV AX,3069H 寄存器寻 MOV AL,BH 在内存中的五种寻址 直接寻 MOV AX,2000H 寄存器间接寻 MOV AX,BX 寄存器相对寻 MOV AX,COUNTSI 或者 MOV AX,SI+CO
4、UNT( 不推荐 ) 基址变址寻址 MOV AX,BPDI 相对基址变址寻址 MOV AX,MASKBXSI 2、指令系统 I 数据传送指令 (1)通用数据传送指令 MOV 传送 MOVSX 带符号扩展传送 用源操作数的符号位来填充目的操作数的高位数据位。 例: MOVSX EAX,CL 把 CL寄存器中的8 位数,符号扩展为32 位数,送到EAX寄存器中。 咖啡综合整理 3 MOVZX 带零扩展传送 恒用 0 来填充目的操作数的高位数据位 例: MOVZX DX,AL 把 AL寄存器中的8 位数,零扩展成16 位数,送到DX寄存器中。 PUSH 进栈 入栈时高位字节先入栈,低位字节后入栈。
5、SP指向栈顶。 POP 出栈 以“先进后出”方式工作。 SP指向栈顶 PUSHA/PUSHAD 所有寄存器进栈 PUSHA (16 位) :进栈次序为:AX,CX,DX,BX,SP,BP,SI,DI PUSHAD(32位) :进栈次序为:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI POPA/POPAD 所有寄存器出栈 POPA(16位) :出栈次序为:DI,SI,BP,SP,BX,DX,CX,AX POPAD(32位) :出栈次序为:EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX XCHG 交换 例: XCHG AX,BX 交换 AX与 BX中的数据 (2)
6、累加器专用传送指令 (只限于使用累加器) IN 输入 例: IN AX,28H MOV DATA_WORD,AX 把端口 28 的内容经过AX传送到存储单元DATA_WORD中。 OUT 输出 例: OUT 5,AL 从 AL寄存器输出一个字节到端口5。 XLAT 换码 (3)地址传送指令 LEA 有效地址送寄存器 LDS 指针送寄存器和DS LES 指针送寄存器和ES LFS 指针送寄存器和FS LGS 指针送寄存器和GS LSS 指针送寄存器和SS 咖啡综合整理 4 LEA LEA REG,SRC 把源操作数的有效地址送到指定的寄存器中 LDS 、LES 、LFS、LGS 、LSS指针送寄
7、存器和段寄存器指令 LDS REG,SRC 把 SRC的偏移地址放到REG 中, 又把偏移地址(SRC+2)放到 DS中 (4)标志寄存器传送指令 LAHF 标志送 AH SAHF AH送标志寄存器 PUSHF/PUSHFD 标志进栈 POPF/POPFD 标志出栈 (5)类型转换指令 CBW 字节转换为字 CWD 字转换为双字 CDQ 双字转换为4 字 BSWAP 字节交换 以 CWD 为例,把AX的内容扩展到DX ,DX为高位, AX为低位。如果AX最高有效位 =1, (DX)=0FFFFH;如果 AX的最 高有效位 =0,(DX)=0 。 CBW 为 AL扩展至 AH ,形成 AX CD
8、Q 为 EAX扩展至 EDX ,形成 EDX:EAX II.算术指令 (1)加法指令 ADD 加法 例: ADD DST,SRC 把 DST与 SRC的和放入DST中 ADC 带进位加法 例: ADC DST ,SRC 把 DST 、SRC与进位标志CF的和放入DST中 INC 加 1 例: INC OPR OPR加一 XADD 交换并相加 例: XADD DST,SRC 首先把 DST与 SRC交换,然后把两数之和放入DST中。 咖啡综合整理 5 (2)减法指令 SUB 减法 例: SUB DST,SRC 把 DST与 SRC的差放入DST中 SBB 带借位减法 例: SBB DST,SRC
9、 把 DST 、SRC以及 CF的差放入DST中 DEC 减 1 例: DEC OPR OPR减一 NEG 求补 例: NEG OPR 把 OPR 按位操作求反以后加一,一般用于求相反数。 CMP 比较 与 SUB 、 SBB一样都是减法操作,不同的是CMP 并不保留减法结果,只是改变标志位。 CMPXCHG 比较并交换 CMPXCHG8B 比较并交换8 字节 (3)乘法指令 MUL 无符号数乘法 IMUL 有符号数乘法 乘法指令的目的操作数必须是累加器。 两个 8 位数相乘,结果放在AX中。 两个 16 位数相乘,高位放在DX中,低位放在AX中。 (4)除法指令 DIV 无符号数除法 IDI
10、V 有符号数除法 除法指令与乘法指令的寻址方式相同 字节 运算时目的操作数在AX中, 结果的商放在AL中 , 余数放在AH中 字运算时目的操作数在DX高位字和AX低位字中 , 结果的商放在AX中 , 余数放在DX中 III.逻辑指令 (1)逻辑运算指令 AND 逻辑与 OR 逻辑或 NOT 逻辑非 XOR 异或 TEST 测试 在这里, TEST与 AND的功能是一样的,但是TEST的结果并不保存 咖啡综合整理 6 (2)移位指令(结合课本73 页的图以后课后习题3.27 来复习) SHL 逻辑左移 每次将操作数的最高位移出并移到CF,最低位补0 SAL 算数左移 SAL指令与 SHL指令完全
11、相同 SHR 逻辑右移 每次将操作数的最低位移出并移到CF,最高位补0 SAR 算数右移 把目的操作数的高位向低位移,空出的高位用最高位(符号位 )填补,并把最低位存入CF ROL 循环左移 把目的操作数的最高位移到最低位,并进入CF中。 ROR 循环右移 把目的操作数的最低位移到最高位,并进入CF中。 RCL 带进位循环左移 整体往左移动,原CF的值填补空出的位,移出的位再进入CF RCR 带进位循环右移 整体往右移动,原CF的值填补空出的位,移出的位再进入CF (3)串处理指令 MOVS 串传送 包括 MOVS 、MOVSB 、MOVSW、MOVSD 四种格式,该操作指令的功能为:把DS:
12、SI 所指向的变量传送到ES:DI 中。 一般用法为: LEA si,source_buffer把源缓冲区的偏移地址放入si 中 LEA di,dest_buffer把目的缓冲区的偏移地址放入di 中 CLD清除方向位DF,方向为从低位向高位进行 MOV cx,n设置要传送的变量个数n REP movsb 重复串传送,从ds:si到 es:di CMPS 串比较 该指令是把指针DS:SI和 ES:DI所指向字节、 字或双字的值相减,CX为比较的个数, 并用所得到的差来设置有关的标 志位,变址寄存器SI和 DI 也将根据标志位DF的值作相应增减。 例:想要比较两个字符是否相等,就要观察ZF的情况
13、,为1 则相等,为0 则不想等 SCAS 串扫描 该指令是用指针ES:DI 所指向字节、字或双字的值与相应的AL、AX或 EAX的值相减,用所得到的差来设置有关标 志位。与此同时,变址寄存器DI 还将根据标志位DF的值进行增减。 咖啡综合整理 7 LODS 从串取 从由指针DS:SI 所指向的内存单元开始,取一个字节、字或双字进入AL、AX或 EAX中,并根据标志位DF对寄存器 SI 作相应增减。该指令的执行不影响任何标志位。 STOS 存入串 该指令是把寄存器AL、AX或 EAX中的值存于以指针ES:DI 所指向内存单元为起始的一片存储单元里,并根据标志 位 DF对寄存器DI 作相应增减。该
14、指令不影响任何标志位。 INS 串输入 该指令是从某一指定的端口接受一个字符串,并存入一片存储单元之中。输入端口由DX指定,存储单元的首地址 和读入数据的个数分别由ES:DI 和 CX来确定。在指令的执行过程中,还根据标志位DF对寄存器DI 作相应增减。 该指令不影响任何标志位。 OUTS 串输出 该指令是把一个字符串输入到指定的输出端口中。输出端口由DX指定,其输出数据的首地址和个数分别由DS:SI 和 CX来确定。在指令的执行过程中,还根据标志位DF对寄存器SI 作相应增减。该指令的执行不影响任何标志位。 REP 重复 REPE/REPZ 相等、为零则重复 REPNE/REPNZ 不相等、
15、不为零则重复 对于以上重复指令,若cx=0 则停止执行重复。 (4)控制转移指令 无条件转移JMP 条件转移 根据单个条件设置转移 JZ(JE) 等于零(相等)则转移 JNZ(JNE) 不等于零(不想等)则转移 JS 结果为负则转移 JNS 结果为正则转移 JO 溢出则转移 JNO 不溢出则转移 JP(JPE) 奇偶位为1 则转移 JNP(JPO) 奇偶位为0 则转移 JB(JNAE、JC) 低于(不高于,等于,进位为1)则转移 JNB(JAE、JNC )不低于(高于,等于,进位为0)则转移 无符号数比较 JB(JNAE、JC) 低于(不高于,等于,进位为1)则转移 JNB(JAE、JNC )
16、不低于(高于,等于,进位为0)则转移 JBE(JNA)低于,等于(不高于)则转移 JNBE (JA)不低于,等于(高于)则转移 有符号数比较 JL(JNGE) 小于(不大于,等于)则转移 JNL(JGE) 不小于(大于,等于)则转移 JLE(JNG) 小于,等于(不大于)则转移 咖啡综合整理 8 JNLE(JG) 不小于,等于(大于)则转移 循环设置 LOOP 循环 LOOPZ/LOOPE 为零 / 等于时循环 LOOPNZ/LOOPNE 不为零 / 不等于时循环 共同的循环退出条件为CX=0 子程序 CALL 调用 RET 返回 中断 INT 中断 (4)处理机控制与杂项操作指令 标志处理指
17、令 CLC 进位位设置为0 STC 进位位设置为1 CLD 方向标志位设置为0 STD 方向标志位设置为1 CLI 中断标志位设置为0 STI 中断标志位设置为1 其他 NOP 无操作 第三章例题 例 3.50 设 X、Y、Z 均为双精度数(双字) ,它们分别存放在地址为X,X+2, Y ,Y+2,Z,Z+2的存储单元中,存放 时高位字在高地址中,低位字在低地址中。在808680286 中可用下列指令序列实现 W X+Y+24-Z 并用 W和 W+2单元存放运算结果。 mov ax,x ;把 x 的低位放入ax 中 mov dx,x+2 ;把 x 的高位放入ax 中 add ax,y ;该语句
18、实现x+y,结果放入ax 中 adc dx,y+2 ;带进位加法x+y,加上进位标志CF add ax,24 ;ax+24 即 x+y 的低位加上24 adc dx,0 ;高位加0 sub ax,z ;x+y+24 的低位与z 的低四位相减 sbb dx,z+2 ;x+y+24 高位与 z 的高四位带借位减 mov w,ax ;把最终结果放入w中 mov w+2,dx 例 3.56 算术运算综合举例,计算:(V-(X*Y+Z-540) )/X 其中 X, Y,Z,V均为 16 位带符号数,已分别装入X,Y,Z,V单元中,要求上式计算结果的商存入AX ,余数存入DX 咖啡综合整理 9 寄存器。编
19、制程序如下: mov ax,x ;把 x 放入 ax 中 imul y ;x 乘以 y,高位放入dx 中,低位放入ax 中 mov cx,ax ;把结果存入cx,bx 中 mov bx,dx mov ax,z ;把 z 放入 ax 中 cwd ;ax 转化为双字类型,AX的符号位去填充DX add cx,ax ;该步实现x*y+z ,加法指令 adc bx,dx ;带进位加法指令 sub cx,540 ;该步实现x*y+z-540 ,减法指令 sbb bx,0 ;带借位减法指令 mov ax,v ;把 v 放入 ax 中 cwd ;ax 转化为双字类型,AX的符号位去填充DX sub ax,c
20、x ;该步实现v-(x*y+z-540),减法指令 sbb dx,bx ;带借位减法指令 idiv x ;该步实现 (v-(x*y+z-540)/x,有符号数除法 ;商放入AX中,余数放入DX中 第三章习题解释 3.4 (1)这是立即寻(AX)=1200H (2)这是寄存器寻(AX)=(BX)=0100H (3)这是直接寻AX的物理地址 =DS*10H+1200H=21200H,字内容( 21200)=4C2AH (4)这是寄存器间接寻AX的物理地址 =DS*10H+0100H=20100H,字内容( 20100) =3412H (5)这是寄存器相对寻AX的物理地址 =DS*10H+0100H
21、+1100=21200H 字内容( 21200)=4C2AH (6)这是基址变址寻AX的物理地址 =DS*10H+0100H+0002H=20102H 字内容( 20102)=7856H (7)这是相对基址变址寻AX的物理地址 =DS*10H+1100H+0100H+0002H=21202H 字内容( 21202)=65B7H 3.8 因为立即寻和寄存器寻不在内存中寻找,因此不存在物理地址。 (1) 立即数寻址无 (2) 寄存器寻址无 (3)直接寻址20100H 物理地址 =DS*10H+100H (4)直接寻址20050H 物理地址 =DS*10H+50H (5)寄存器间接寻址20100H
22、物理地址 =DS*10H+100H (6)寄存器间接寻址21100H 咖啡综合整理 10 物理地址 =ES*10H+100H (7)寄存器间接寻址15010H 物理地址 =SS*10H+100H(BP关联的段寄存器为SS ) (8)寄存器间接寻址200A0H 物理地址 =DS*10H+A0H (9)寄存器相对寻址2010AH 物理地址 =DS*10H+100H+10d+ (10)寄存器相对寻址20150H 物理地址 =DS*10H+100H+50H (11)基址变址寻址201A0H 物理地址 =DS*10H+100H+A0H (12)相对基址变址寻址201F0H 物理地址 =DS*10H+10
23、0H+A0H+50H 327 (1) DX=0000 0000 0101 1100B 开始时 DX=0000 0000 1011 1001B,逻辑右移1 位,最高位为零,因此最高位补零 (2) DX=0000 0000 0001 0111B 开始时 DX=0000 0000 1011 1001B,算术右移3 位,最高位补三个0 (3) DX=0000 0101 1100 1000B 开始时 DX=0000 0000 1011 1001B,逻辑左移3 位,最低位补三个-0 (4) DX=0000 0000 0111 0010B 开始时 DX=0000 0000 1011 1001B, DL=10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBM PC 汇编语言 常用 指令 符号 原理 考点 大全 要点
链接地址:https://www.31doc.com/p-5197141.html