



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言(王爽版)用到的伪指令,指令等一 寄存器(reg):AX,BX,CX,DX,ah,al,bh,bl,ch,cl,dh,dl,SI,DI,SP,BP,IP。段寄存器(sreg):CS,SS,DS,ES。1 CS代码段寄存器(Code Segment Register),其值为代码段的段值; 2 DS数据段寄存器(Data Segment Register),其值为数据段的段值; 3 SS堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;4 ES附加段寄存器(Extra Segment Register),其值为附加数据段的段值;5 BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据; 6 SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。7 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、除、输入/输出等操作,它们的使用频率很高; 8 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 9 寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数; 10 寄存器DX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。11 SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。16位标志寄存器共用了9个标志位,它们主要用来反映CPU的状态和运算结果的特征。标志位的分布如下表所示。1514131211109876543210 OFDFIFTFSFZF AF PF CF1、进位标志CF(Carry Flag)主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。2、奇偶标志PF(Parity Flag)用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。3、零标志ZF(Zero Flag)用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。4、符号标志SF(Sign Flag)用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。5、溢出标志OF(Overflow Flag)用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。6、追踪标志TF(Trap Flag)被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。7、方向标志DF(Direction Flag)用来决定在串操作指令执行时有关指针寄存器发生调整的方向。Cld指令:将标志寄存器的DF位置0,Std指令:将标志寄存器的DF位置18、中断允许标志IF是用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。Sti用于设置IF=1;Cli用于设置IF=0。二 数据传送指令(mov,push,pop,pushf,popf);1 Mov为转移指令把后面的数据转移到前面。mov 寄存器,段寄存器mov段寄存器,寄存器mov 寄存器,数据mov 寄存器,寄存器mov 寄存器,内存单元mov 内存单元,段寄存器2 push和poppush (段)寄存器;将一个(段)寄存器中的数据入栈。pop (段)寄存器;出栈,用一个(段)寄存器接收出栈的数据。push 内存单元;将一个内存字单元处的字入栈(注意:栈操作都是以字为单元。)pop 内存单元;出栈,用一个内存单元接收出栈的数据。3 pushf和popfpushf 的功能是将表示寄存器的值压栈。popf 是从栈中弹出数据,送入标志寄存器中。三 算术运算指令(add,sub,adc,sbb,inc,dec,cmp,div,mul);1 add为相加指令,把两个数相加的结果存储在前面add寄存器,数据add寄存器,寄存器add寄存器,内存单元add内存单元,寄存器2 sub为相减指令,把第一个数减去第二个数的结果存储在前面,用法同add。3 adc和sbbadc带进位加法指令,它利用了CF位上记录的进位值。指令格式:adc 操作对象1,操作对象2功能:操作对象1=操作对象1+操作对象2+CFsbb带借位减法指令,它利用了CF位上记录的进位值。指令格式:sbb 操作对象1,操作对象2功能:操作对象1=操作对象1操作对象2CF4 inc和decinc 操作对象;实现操作对象自加一。dec 操作对象;实现操作对象自减一。5 div是除法指令格式如下:div regdiv 内存单元(1) 除数:有8位和16位两种,在一个寄存器或内存单元中。(2) 被除数:默认放在AX或DX和AX中,如果除数为8位,被除数则为16位,默认在AX中存放;如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。(3) 结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。6 mul 是乘法指令格式如下:mul regmul 内存单元(1) 两个相乘的数:两个相乘的数,要么都是8位,要么都是16位。如果是8位,一个默认放在AL中,另一个放在8位寄存器或内存字节单元中;如果是16位,一个默认在AX中,另一个放在16位寄存器或内存字单元中。(2) 结果:如果是8位乘法,结果默认放在AX中;如果是16位乘法,结果高位默认在DX中存放,低位在AX中存放。7 cmp 是比较指令cmp指令格式:cmp 操作对象1,操作对象2功能:计算操作对象1操作对象2 但并不保存结果,仅仅根据计算结果对标志寄存器进行设置。和“检测比较结果的条件转移指令”配合使用。常用的根据无符号数的比较结果进行转移的条件转移指令如下:第一个字母j,表示jump;指令含义检测的相关标志位je等于则转移表示equalZF=1jne不等于则转移表示not equalZF=0jb低于则转移表示 belowCF=1jnb不低于则转移表示not belowCF=0ja高于则转移表示 aboveCF=0且ZF=0jna不高于则转移表示 not aboveCF=1或ZF=1四 逻辑指令(and,or,shl,shr);1 and 指令:逻辑与指令,按位进行与运算。通过该指令可将可将操作对象的相应位设为0,其他位不变。2 or 指令:逻辑或指令,按位进行或运算。通过该指令可将可将操作对象的相应位设为1,其他位不变。3 shl 指令:逻辑左移指令;它的功能为:(1) 将一个寄存器或内存单元中的数据向左移位;(2) 将最后移出的一位写入CF中;(3) 最低位用0补充。4 shr 指令:逻辑右移指令;它的功能为:(1) 将一个寄存器或内存单元中的数据向右移位;(2) 将最后移出的一位写入CF中;(3) 最高位用0补充。注意:如果移动位数大于1时,必须将移动位数放在cl中。五 转移指令1 无条件转移指令,jmpJmp可以只修改IP,也可以同时修改CS和IP。“jmp short 标号 ”实现段内短转移,功能为:(IP)=(IP)+8位位移。(1)8位位移=“标号”处的地址jmp指令后的第一个字节的地址;(2)short指明此处的位移为8位位移;(2)8位位移的范围为-128127,用补码表示;(3)8位位移由编译程序在编译时算出。“jmp near ptr 标号”实现段内近转移,功能为:(IP)=(IP)+16位位移。(1)16位位移=“标号”处的地址jmp指令后的第一个字节的地址;(2)near ptr指明此处的位移为16位位移;(2)16位位移的范围为-3276832767,用补码表示;(3)16位位移由编译程序在编译时算出。“jmp far ptr 标号”实现的是段间转移,又称为远转移。功能如下:(CS)=标号所在段的段地址;(IP)=标号在段中的偏移地址。far ptr 指明了指令用标号的段地址和偏移地址修改CS和IP。“jmp word ptr 内存单元地址(段内转移)”功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址。“jmp dword ptr 内存单元地址(段间转移)”功能:从内存单元地址处开始存放着两个字,高地址处的字是转移的目的段地址,低地址处是转移的目的偏移地址。(CS)=(内存单元地址+2);(IP)=(内存单元地址)。内存单元地址可用寻址方式的任一格式给出。2 条件转移指令,jcxz,je,jb,ja,jnb,jna所有的有条件转移指令都是短转移。jcxz指令格式:jcxz 标号(如果(CX)=0,转移到标号处执行。)操作:当(CX)=0时,(IP)=(IP)+8位位移。3 循环指令,loop所有的循环指令都是短转移。指令格式:loop 标号 (CX)=(CX)1,如果(CX)!=0,转移到标号处执行。)操作:(1)(CX)=(CX)1;(2)如果(CX)!=0,(IP)=(IP)+8位位移。4 过程,call,ret,retf(1)ret指令用栈中的数据,修改IP的内容,从而实现近转移;CPU执行ret指令时,相当于进行:pop IP(2)retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。CPU执行retf指令时,相当于进行:pop IPpop CS(4) Call指令不能实现短转移,除此之外,call指令实现转移的方法和jmp指令的原理相同。CPU执行call指令时,进行两步操作:1、将当前的IP或CS和IP压入栈中;2、转移。5 中断,int,iret(1) int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。执行过程如下:1、取中断类型码n;2、标志寄存器入栈,IF=0,TF=0;3、CS、IP入栈;4、(IP)=(n*4),(CS)=(n*4+2)。(2) iret指令的功能为:pop IP pop CS popfint指令和iret指令的配合使用与call指令和ret指令的配合使用具有相似的思路。六 处理机控制指令(cld,std,cli,sti)cld指令:将标志寄存器的DF位置0,正向传送。std指令:将标志寄存器的DF位置1,逆向传送。cli指令:用于设置IF=0sti指令:用于设置IF=1七 串处理指令(movsb,movsw,rep)Flag的第10位是DF,方向标志位。在串处理指令中,控制每次操作后si,di的增减。DF=0 每次操作后si,di递增;DF=1 每次操作后si,di递增。(1)格式:movsb功能:执行movsb指令相当于进行下面几步操作:1、(es)*16+(di)=(ds)*16+(si)2、如果DF=0则:(si)=(si)+1 (di)=(di)+1 如果DF=1则:(si)=(si)1 (di)=(di)1(2)格式:movsw movsw的功能是将ds:si指向的内存字单元中word送入es:di中,然后根据标志寄存器DF位的值,将si和di递增2或减2。(3) rep的作用是根据cx的值,重复执行后面的串传送指令。一般来说,movsb和movsw都和rep配合使用,格式如下:rep movsb用汇编语法来描述就是:s:movsb loop srep movsw用汇编语法来描述就是:s:movsw loop s使用串传送指令进行数据的传送,需要给它提供一些必要的信息,它们是:1、 传送的原始位置:ds:si;2、 传送的目的位置:es:di;3、 传送的长度:cx;4、 传送的方向:DF。八 伪指令(segment,ends,end,assume,offset,seg,dup,db,dw,dd, in,out)(1)segment和ends是一对成对使用的伪指令,这是在写可被编译器变异的汇编程序时,必须用到的一对伪指令。Segment和ends的功能是定义一个段,segment说明一个段开始,ends说明一个段结束。一个段必须有一个名称来标识,使用格式为:段名 segment.段名 ends(3) end是一个汇编程序的结束标记。(4) assume这个伪指令的含义为“假设”。它假设某一段寄存器和程序中的某一个用segment.ends定义的段相关联。通过assume说明这种关联,在需要的情况下,编译程序可以将段寄存器和某一个具体的段相联系。(5) offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。Seg操作符,功能为取得某一标号的段地址。(6) dup是一个操作符,它是和db,dw,dd等数据定义伪指令配合使用的,用来进行数据的重复。使用格式如下:l db 重复的次数 dup(重复的字节型数据);l dw 重复的次数 dup(重复的字型数据);l dd 重复的次数 dup(重复的双字数据)。(7) db、dw和dd定义字节型数据、字型数据和双字数据。(8) 端口的读写指令只有两个:in和out,分别用于从端口读取数据和往端口写入数据。在in和int指令中,只能使用ax或al来存放从端口中读入的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 燃气系统集成设计方案
- 塑料零部件生产线项目工程方案
- 酒店门窗安装工程施工方案
- 公路路面防滑技术实施方案
- 企业间生产经营信息保密及产业联盟合作协议
- 跨国企业生产基地租赁与生产线设备转让合同范本
- 路面建设实施方案
- 油罐管线保温施工方案
- 高纯硫化钠生产线建设项目技术方案
- 校园安全教育整改报告
- 2024年09月2024秋季中国工商银行湖南分行校园招聘620人笔试历年参考题库附带答案详解
- 第一章-发型发展简史
- 智能计算系统:从深度学习到大模型 第2版课件 9、第九章-大模型计算系统
- 企业所得税汇算清缴政策培训会课件-于永勤
- 《北京市道路桥梁试验检测费用定额》
- 2024年下半年湖北黄冈黄梅县事业单位招聘“三支一扶”服务期满人员17人易考易错模拟试题(共500题)试卷后附参考答案
- 《小儿神经系统查体》课件
- 农业行政执法工作指南
- 小学体育教案《50米快速跑(途中跑)》
- 高职计算机专业人工智能技术应用与开发
- 地铁接触网检修工技能竞赛考试题库500题(含答案)
评论
0/150
提交评论