ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:53.46KB ,
资源ID:5344053      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5344053.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IBMPC汇编语言期末总复习资料大全.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

IBMPC汇编语言期末总复习资料大全.docx

1、IBMPC汇编语言期末总复习资料大全第二章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位) 基址指针寄存器EDI(32位) DI(16位) 目的变址寄存器ESI(32位) SI(16位

2、) 源变址寄存器(2)专用寄存器EIP(32位) IP(16位) 指令指针寄存器EFLAGS(32位) FLAGS(16位) 标志寄存器ESP (32位) SP(16位) 堆栈指针寄存器2、标志位的符号表示、标志位标志为1标志为0OF 溢出(是/否)OVNVDF 方向(减量/增量)DNUPIF 中断(允许/关闭)EIDISF 符号(负/正)NGPLZF 零(是/否)ZRNZAF 辅助进位(是/否)ACNAPF 奇偶(偶/奇)PEPOCF 进位(是/否)CYNC3、段寄存器CS(16位)代码段 DS(16位)数据段SS(16位)堆栈段 ES(16位)附加段4、段寄存器和相应存放偏移地址的寄存器之

3、间的默认组合段偏移CSIPSSSP或BPDSBX、DI、SI或一个16位数ESDI(用于串指令)第三章1、七种寻址方式(举例)立即寻 MOV AX,3069H寄存器寻 MOV AL,BH在内存中的五种寻址直接寻 MOV AX,2000H寄存器间接寻 MOV AX,BX寄存器相对寻 MOV AX,COUNTSI 或者 MOV AX,SI+COUNT(不推荐)基址变址寻址 MOV AX,BPDI相对基址变址寻址 MOV AX,MASKBXSI2、指令系统I 数据传送指令(1) 通用数据传送指令MOV 传送MOVSX 带符号扩展传送用源操作数的符号位来填充目的操作数的高位数据位。例:MOVSX EA

4、X,CL把CL寄存器中的8位数,符号扩展为32位数,送到EAX寄存器中。MOVZX 带零扩展传送恒用0来填充目的操作数的高位数据位例:MOVZX DX,AL把AL寄存器中的8位数,零扩展成16位数,送到DX寄存器中。PUSH 进栈入栈时高位字节先入栈,低位字节后入栈。SP指向栈顶。POP 出栈以“先进后出”方式工作。SP指向栈顶PUSHA/PUSHAD 所有寄存器进栈PUSHA(16位):进栈次序为:AX,CX,DX,BX,SP,BP,SI,DIPUSHAD(32位):进栈次序为:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDIPOPA/POPAD 所有寄存器出栈POPA(16位

5、):出栈次序为:DI,SI,BP,SP,BX,DX,CX,AXPOPAD(32位):出栈次序为:EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAXXCHG 交换例:XCHG AX,BX 交换AX与BX中的数据(2) 累加器专用传送指令(只限于使用累加器)IN 输入例:IN AX,28HMOV DATA_WORD,AX把端口28的内容经过AX传送到存储单元DATA_WORD中。OUT 输出例:OUT 5,AL 从AL寄存器输出一个字节到端口5。XLAT 换码(3) 地址传送指令LEA 有效地址送寄存器LDS 指针送寄存器和DSLES指针送寄存器和ESLFS指针送寄存器和FSLGS指针

6、送寄存器和GSLSS指针送寄存器和SS1 LEALEA REG,SRC把源操作数的有效地址送到指定的寄存器中2 LDS、LES、LFS、LGS、LSS指针送寄存器和段寄存器指令LDS REG,SRC把SRC的偏移地址放到REG中,又把偏移地址(SRC+2)放到DS中(4) 标志寄存器传送指令LAHF 标志送AHSAHF AH送标志寄存器PUSHF/PUSHFD 标志进栈POPF/POPFD 标志出栈(5) 类型转换指令CBW字节转换为字CWD字转换为双字CDQ双字转换为4字BSWAP字节交换以CWD为例,把AX的内容扩展到DX,DX为高位,AX为低位。如果AX最高有效位=1,(DX)=0FFF

7、FH;如果AX的最高有效位=0,(DX)=0。CBW为AL扩展至AH,形成AXCDQ为EAX扩展至EDX,形成EDX:EAXII.算术指令(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中。(2) 减法指令SUB减法例:SUB DST,SRC 把DST与SRC的差放入DST中SBB带借位减法例:SBB DST,SRC 把DST、SR

8、C以及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无符号数除法IDIV有符号数除法除法指令与乘法指令的寻址方式相同字节运算时目的操作数在AX中,结果的商放在AL中

9、,余数放在AH中字运算时目的操作数在DX高位字和AX低位字中,结果的商放在AX中 ,余数放在DX中III.逻辑指令(1) 逻辑运算指令AND逻辑与OR 逻辑或NOT逻辑非XOR异或TEST测试在这里,TEST与AND的功能是一样的,但是TEST的结果并不保存(2)移位指令(结合课本73页的图以后课后习题3.27来复习)SHL逻辑左移每次将操作数的最高位移出并移到CF,最低位补0SAL算数左移SAL指令与SHL指令完全相同SHR逻辑右移每次将操作数的最低位移出并移到CF,最高位补0SAR算数右移把目的操作数的高位向低位移,空出的高位用最高位(符号位)填补,并把最低位存入CFROL循环左移把目的操

10、作数的最高位移到最低位,并进入CF中。ROR循环右移把目的操作数的最低位移到最高位,并进入CF中。RCL带进位循环左移整体往左移动,原CF的值填补空出的位,移出的位再进入CFRCR带进位循环右移整体往右移动,原CF的值填补空出的位,移出的位再进入CF(3)串处理指令MOVS串传送包括MOVS、MOVSB、MOVSW、MOVSD四种格式,该操作指令的功能为:把DS:SI所指向的变量传送到ES:DI中。一般用法为:LEA si,source_buffer 把源缓冲区的偏移地址放入si中LEA di,dest_buffer 把目的缓冲区的偏移地址放入di中CLD清除方向位DF,方向为从低位向高位进行

11、MOV cx,n设置要传送的变量个数nREP movsb 重复串传送,从ds:si到es:diCMPS串比较该指令是把指针DS:SI和ES:DI所指向字节、字或双字的值相减,CX为比较的个数,并用所得到的差来设置有关的标志位,变址寄存器SI和DI也将根据标志位DF的值作相应增减。例:想要比较两个字符是否相等,就要观察ZF的情况,为1则相等,为0则不想等SCAS串扫描该指令是用指针ES:DI所指向字节、字或双字的值与相应的AL、AX或EAX的值相减,用所得到的差来设置有关标志位。与此同时,变址寄存器DI还将根据标志位DF的值进行增减。LODS从串取从由指针DS:SI所指向的内存单元开始,取一个字

12、节、字或双字进入AL、AX或EAX中,并根据标志位DF对寄存器SI作相应增减。该指令的执行不影响任何标志位。STOS存入串该指令是把寄存器AL、AX或EAX中的值存于以指针ES:DI所指向内存单元为起始的一片存储单元里,并根据标志位DF对寄存器DI作相应增减。该指令不影响任何标志位。INS串输入该指令是从某一指定的端口接受一个字符串,并存入一片存储单元之中。输入端口由DX指定,存储单元的首地址和读入数据的个数分别由ES:DI和CX来确定。在指令的执行过程中,还根据标志位DF对寄存器DI作相应增减。该指令不影响任何标志位。OUTS串输出该指令是把一个字符串输入到指定的输出端口中。输出端口由DX指

13、定,其输出数据的首地址和个数分别由DS:SI和CX来确定。在指令的执行过程中,还根据标志位DF对寄存器SI作相应增减。该指令的执行不影响任何标志位。REP重复REPE/REPZ相等、为零则重复REPNE/REPNZ不相等、不为零则重复对于以上重复指令,若cx=0则停止执行重复。(4)控制转移指令无条件转移JMP3 条件转移1 根据单个条件设置转移JZ(JE)等于零(相等)则转移JNZ(JNE) 不等于零(不想等)则转移JS结果为负则转移JNS结果为正则转移JO溢出则转移JNO不溢出则转移JP(JPE)奇偶位为1则转移JNP(JPO)奇偶位为0则转移JB(JNAE、JC)低于(不高于,等于,进位

14、为1)则转移JNB(JAE、JNC)不低于(高于,等于,进位为0)则转移2 无符号数比较JB(JNAE、JC)低于(不高于,等于,进位为1)则转移JNB(JAE、JNC) 不低于(高于,等于,进位为0)则转移JBE(JNA)低于,等于(不高于)则转移JNBE(JA)不低于,等于(高于)则转移3 有符号数比较JL(JNGE)小于(不大于,等于)则转移JNL(JGE)不小于(大于,等于)则转移JLE(JNG)小于,等于(不大于)则转移JNLE(JG)不小于,等于(大于)则转移循环设置LOOP循环LOOPZ/LOOPE为零/等于时循环LOOPNZ/LOOPNE不为零/不等于时循环共同的循环退出条件为

15、CX=04 子程序CALL调用RET返回5 中断INT 中断(4)处理机控制与杂项操作指令标志处理指令CLC进位位设置为0STC进位位设置为1CLD方向标志位设置为0STD方向标志位设置为1CLI中断标志位设置为0STI中断标志位设置为1其他NOP 无操作第三章例题例3.50设X、Y、Z均为双精度数(双字),它们分别存放在地址为X,X+2,Y,Y+2,Z,Z+2的存储单元中,存放时高位字在高地址中,低位字在低地址中。在808680286中可用下列指令序列实现 WX+Y+24-Z并用W和W+2单元存放运算结果。 mov ax,x ;把x的低位放入ax中 mov dx,x+2 ;把x的高位放入ax

16、中 add ax,y ;该语句实现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寄存器。编制程序如下:mov ax,x

17、 ;把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,cx ;该步实现v-(x*y+z-540),减法指令 sbb dx,bx

18、;带借位减法指令 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+1100=21200H字内容(21200)=4C2AH(6) 这是基址变址寻AX的物理

19、地址=DS*10H+0100H+0002H=20102H字内容(20102)=7856H(7) 这是相对基址变址寻AX的物理地址=DS*10H+1100H+0100H+0002H=21202H字内容(21202)=65B7H3.8因为立即寻和寄存器寻不在内存中寻找,因此不存在物理地址。(1) 立即数寻址 无 (2) 寄存器寻址 无(3) 直接寻址 20100H物理地址=DS*10H+100H(4) 直接寻址 20050H物理地址=DS*10H+50H(5) 寄存器间接寻址 20100H物理地址=DS*10H+100H(6) 寄存器间接寻址 21100H物理地址=ES*10H+100H(7) 寄

20、存器间接寻址 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+100H+A0H+50H327(1) DX=0000 0000 0101 1100B开始时DX=0000 0000 1011 1001B,逻辑右移1位,

21、最高位为零,因此最高位补零(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=1011 1001B,逻辑左移1位,DL的最低位补0因此DL=0111 0010B,因此DX=0000 0000 0111 0010B(5) DX=0001 0000 0001 0111

22、B开始时DX=0000 0000 1011 1001B,循环右移3位,分别从低位移动3个二进制位到高位,(6) DX=0000 0000 1100 1101B开始时DX=0000 0000 1011 1001B,DL=1011 1001B,循环左移3位,分别从高位移动3个二进制位到高位,DL=1100 1101B,DX=0000 0000 1011 1001B(7) DX=0000 0000 1011 1001B开始时DX=0000 0000 1011 1001B,DH=0000 0000,算术左移1位,DH=0000 0000因此DX=0000 0000 1011 1001B(8) DX=0

23、000 0101 1100 1100B开始时DX=0000 0000 1011 1001B,带进位循环左移3位,移动的同时把进位标志CF挤出来,最终CF=0。因此DX=0000 0101 1100 1100B(9) DX=0000 0000 1101 1100B开始时DX=0000 0000 1011 1001B,DL=1011 1001B,带进位循环右移1位,移动的同时把进位标志CF挤出来,最终CF=1,DL=1101 1100B,DX=0000 0000 1101 1100B第四章1.伪操作伪操作又成为伪指令,它们不像机器指令那样是在程序运行期间由计算机来执行的,而是在汇编程序对源程序汇编

24、期间由汇编程序处理的操作,它们可以完成如处理器选择、定义程序模式、定义数据、分配存储区、指示程序结果等功能。2.数据定义及存储器分配伪操作I数据类型定义DB(定义字节,占用1字节)、DW(定义字,占用2字节)、DD(定义双字,占用34字节)、DQ(定义4字,占用8字节)II 复制操作符DUP例4.10ARRAY1 DB 2 DUP(0,1,2,?)ARRAY2 DB 100 DUP(?)它与ARRAY1 DB 0,1,2,?,0,1,2,?是等价的例4.11ARRAY3 DB 100 DUP(0,2 DUP(1,2),0,3)它与ARRAY3 DB 100 DUP(0,1,2,1,2,0,3)

25、是等价的III 表达式赋值伪操作EQU其功能为赋值,EQU伪操作中的表达式名是不允许重复使用的,EQU复制在内存中不占用空间。IV.地址计数器与对准伪操作地址计数器$地址计数器$用来保存当前正在汇编指令的偏移地址。ORG伪操作ORG伪操作用来设置当前地址计数器的值。如常数表达式的值为n,ORG伪操作可以使下一个字节的地址成为常数表达式的值n例如:data segment A DB10H ORG 100H B DB 10H data ends如果A的偏移地址为0000,那么B的偏移地址为0101.V.数值回送操作符SEG 回送变量或标号的段地址值OFFSET 回送变量或标号的偏移地址值实验报告二

26、的解释开始时org 100h ,下一条语句 yourname db 20093592zhengzhiwei的偏移量为100h,从13ED:0100开始为该语句的第一位,db定义了字符串yourname中的字符为字节变量,各占一个字节,因此yourname占19个字节,末位的i在13ED:0112,数字0-9的ASCII码为30h-39h,因此从13ED:0100开始的8位为32 30 30 39 33 35 39 32小写字母a-z的ASCII码为61h-7ah,因此从13ED:0108开始的11位字母为7A 68 65 6E 67 7A 68 69 77 65 69,data_byte db

27、 10,4,10h中10为10进制数,转换为16进制,为0Ah,db定义字节变量因此从13ED:0113开始的3个数分别为0A 04 10data_word dw 100,100h,-5中的变量为字变量,100为十进制,转换为十六进制,为00 64h,100h依然为01 00h,-5为带符号数,负数,把5转换为2进制,0000 0000 0000 0101,求反码,1111 1111 1111 1010,反码加一为补码,1111 1111 1111 1011,转换为十六进制,为FF FB,因此从13ED:0116开始的6个字节为,64 00 , 00 01 ,FB FFdata_dw dd 3

28、*20,0fffdh中的变量为双字变量,占用4个字节,3*20=60=3C h,在内存中表示为3C 00 00 00, 0fffdh在内存中表示为,FD FF 00 00。因此从13ED:011C开始的8个字节为 3C 00 00 00, FD FF 00 00message db ABC中的变量为字节变量,大写字母A-Z的ASCII码为,41-5A,因此,ABC在内存中表示为 41 42 43.从13ED:0124开始的3个字节为 41 42 43msg dw AB中的变量为字变量,AB为一个字,高位为41,低位为42,因此从13ED:0127开始的2个字节为 42 41.array1 db

29、 2 dup(0,1,2,?),这是字节变量的二维数组,内容为0,1,2,?,0,1,2,?因此在内存中表示为 00 01 02 00 00 01 02 00,从13ED:0129开始的8个字节为 00 01 02 00 00 01 02 00array3 db 2 dup(0,2 dup(3,4),0,5),这是字节变量的三维数组,内容为 00 03 04 03 04 00 05 00 03 04 03 04 00 05,从13ED:0131开始的14个字节为00 03 04 03 04 00 05 00 03 04 03 04 00 05。array2 dw 1,2,3,这是自变量的数据,

30、内容为1,2,3.在内存中表示为01 00,02 00, 03 00.因此,从13ED:013F开始的6个字节为01 00 02 00 03 00。最后一位为13ED:0134byte_array label byte、constant equ 256、squarecon equ 256*256这三条语句不占用内存空间。array4 dw $,$+4,3,4,$+4中的变量为字变量,$用于计算当前位置的偏移地址,从图书可知,第一个$所在偏移地址为0145,因此在内存中表示为45 01,第二个$所在的偏移地址为0147,$+4为014B,因此在内存中表示为4B 01,而3,4则表示为03 00 04 00,因为最后一位00所在偏移地址为014C,因此下一位$的偏移地址为014D,$+4为0151,因此在内存中表示为51 00。从13ED:0145开始的20个字节为45 01 4B 01第五章1. 二进制转十六进制

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1