IBM-PC汇编语言期末总复习资料汇编.docx_第1页
IBM-PC汇编语言期末总复习资料汇编.docx_第2页
IBM-PC汇编语言期末总复习资料汇编.docx_第3页
IBM-PC汇编语言期末总复习资料汇编.docx_第4页
IBM-PC汇编语言期末总复习资料汇编.docx_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言期末复习资料整理序言为方便同学们期末汇编复习,特整理汇编语言复习资料一份,由于时间不充裕,仅将本人觉得比较重要的一些知识点、例题以及程序注释整理下来,供大家参考,其中资料里面有一些没有说明使用方法的指令,大家觉得有用的话可以在书上寻找使用方法。限于本人水平,如果资料中出现错误,请同学们互相通知。祝大家考试顺利。 25第二章 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)专用寄存器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、段寄存器和相应存放偏移地址的寄存器之间的默认组合段偏移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 eax,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位):出栈次序为: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指针送寄存器和gslss指针送寄存器和ss lealea reg,src把源操作数的有效地址送到指定的寄存器中 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)=0ffffh;如果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、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无符号数除法idiv有符号数除法除法指令与乘法指令的寻址方式相同字节运算时目的操作数在ax中,结果的商放在al中 ,余数放在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循环左移把目的操作数的最高位移到最低位,并进入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,方向为从低位向高位进行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所指向的内存单元开始,取一个字节、字或双字进入al、ax或eax中,并根据标志位df对寄存器si作相应增减。该指令的执行不影响任何标志位。stos存入串该指令是把寄存器al、ax或eax中的值存于以指针es:di所指向内存单元为起始的一片存储单元里,并根据标志位df对寄存器di作相应增减。该指令不影响任何标志位。ins串输入该指令是从某一指定的端口接受一个字符串,并存入一片存储单元之中。输入端口由dx指定,存储单元的首地址和读入数据的个数分别由es:di和cx来确定。在指令的执行过程中,还根据标志位df对寄存器di作相应增减。该指令不影响任何标志位。outs串输出该指令是把一个字符串输入到指定的输出端口中。输出端口由dx指定,其输出数据的首地址和个数分别由ds:si和cx来确定。在指令的执行过程中,还根据标志位df对寄存器si作相应增减。该指令的执行不影响任何标志位。rep重复repe/repz相等、为零则重复repne/repnz不相等、不为零则重复对于以上重复指令,若cx=0则停止执行重复。(4)控制转移指令无条件转移jmp 条件转移1 根据单个条件设置转移jz(je)等于零(相等)则转移jnz(jne) 不等于零(不想等)则转移js结果为负则转移jns结果为正则转移jo溢出则转移jno不溢出则转移jp(jpe)奇偶位为1则转移jnp(jpo)奇偶位为0则转移jb(jnae、jc)低于(不高于,等于,进位为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不为零/不等于时循环共同的循环退出条件为cx=0 子程序call调用ret返回 中断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中可用下列指令序列实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论