机器语言指令概况

上传人:ji****72 文档编号:50949564 上传时间:2018-08-11 格式:PPT 页数:56 大小:510.50KB
返回 下载 相关 举报
机器语言指令概况_第1页
第1页 / 共56页
机器语言指令概况_第2页
第2页 / 共56页
机器语言指令概况_第3页
第3页 / 共56页
机器语言指令概况_第4页
第4页 / 共56页
机器语言指令概况_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《机器语言指令概况》由会员分享,可在线阅读,更多相关《机器语言指令概况(56页珍藏版)》请在金锄头文库上搜索。

1、补充:IBM PC 机的机器语言指令概况 由于时间关系,这些补充内容就不讲了 机器语言指令由操作码和地址码两部分组成。 1.操作码的机器语言表示 IBM PC 机的机器语言指令是多字节指令,一条指令可以 由17个字节组成。这些字节包括以下三个字段。(1)OP(操作码)字段:它通常用指令的第一个字节表示,如8位还不够,还可 能占有第二个字节中的3位,除此以外的其他字节则用来表示 地址码。操作码表示了指令规定的操作种类和两个操作数的 来源。OPdw1(2)d(方向)字段(Bit1):只在双操作数指令中才有效。 1) 若d=1,表示目的操作数由REG字段确定,而源操作数 则由MOD和R/M字段确定。

2、 2) 若d=0,表示目的操作数由MOD和R/M字段确定,而源 操作数则由REG字段确定。 (3)W(字/字节)字段(Bit0):1) 当W=1时,表示两个操作数为字.2) 当W=0时,表示两个操作数为字节。 另外,当使用立即方式寻址时,操作码中用S位表示符号扩展:如立即数为8位,但要求扩展成16位时,S位为1。因此,当指 令做字节操作时,SW=00;当指令有16位立即数且作字操作时 SW=01;而当指令有8位立即数但需要经符号扩展成16位立即数 作字操作时,则SW=11。22.寻址方式的机器语言表示 IBM PC机用一个寻址方式字节表示操作数的寻 址方式,它通常是机器指令的第二个字节。寻址

3、方式字节可表示如下: 其中reg表示寄存器方式,在双操作数指令的 情况下规定必须有一个操作数在寄存器中,该寄 存器由reg字段指定。它与操作码字节中的W位相 结合确定的寄存器如表1所示。 Mod字段与r/m字段结合在一起确定另一个操作 数的寻址方式。 Mod=11为寄存器方式,由r/m的内容确定选用 哪个寄存器,具体值由表2确定。modregr/m3表1 reg字段所对应的寄存器45 其他三种寻址方式则为操作数在存储器中时的 寻址方式,由表2表示,下面分别加以说明: Mod=00为无位移量字节的存储器寻址方式。 其中当r/m=110时指定为直接寻址方式,此时寻 址方式字节之后跟16位位移量D1

4、6,用来指出操 作数的有效地址。 Mod=01为带有一个位移量字节的存储器寻址 方式,因此指令中应有 其中D8为8位位移量,是带符号数,当用来计 算有效地址时,可自动将符号扩展到16位。01 Reg r/mD86 Mod=10为带有二个位移量字节的存储器寻址方 式,因此指令中有 其中D16为16位位移量,它也是带符号数。 表2中每项下的段寄存器是指无段跨越前缀的 情况下所使用的隐含的段寄存器。如果指令中指 定段跨越前缀的情况下所使用的隐含的段寄存器 。如果指令中指定段跨越前缀,则在机器语言中 使用放在指令之前的一个字节来表示,如下所示 : 其中001及110均为段前缀标志,SEG则指定四 个段

5、寄存器中的一个,如表3.3所示。01 Reg r/mD16 低位D16 高位001SEG1107表3 SEG字段所对应的段寄存器 SEG段寄存器00ES01CS10SS11DS8 IBM PC机规定下列三种情况下不允许使用段跨越 前缀: 1。访问堆栈的指令(如PUSH和CALL等)使用SP 作为偏移地址指针,只能使用SS作为段寄存器。 2。串处理指令规定源寄存器使用SI,源串在DS 段中,目的寄存器使用DI,目的串必须在ES段中 。这里如果要用段跨越前缀则只能用于源而不能 用于目的,也就是说,SI可以更换段寄存器,而 DI则只能使用ES作为段寄存器,不允许用段跨越 前缀更换。 指令只能存放在代

6、码段中。93.加法的机器指令举例加法指令格式:ADD DEST,SRC 指令功能:将源操作数与目的操作数相加,结果送到目的地 址中。并根据相加结果设置标志寄存器的OF、SF、ZF、AF 、PF和CF标志位。DEST(DEST)+(SRC)根据不同的寻址方式,加法指令可以有三种格式: ADD mem/reg1,mem/reg2其中mem/reg1表示目的操作数地址,mem/reg2表示源操作数 地址,它们都可以指定一个寄存器或一个存储单元的内容作 为操作数。这些操作数可以是8位的或16位的,它们可同时 指定两个寄存器,但不能同时指定两个存储单元,因此它的 工作方式可以是以下三种方式中的一种: 1

7、0 A)寄存器与寄存器的内容相加,结果存入寄存器中 。 B)寄存器与存储单元的内容相加,结果存入存储单 元中。 C)存储单元与寄存器的内容相加,结果存入寄存器 中。 这种寻址方式的机器语言为: 其中000000为操作码。W=0为字节运算;w=1为字运 算。D=0时,由mod、r/m决定目的mem/reg1,reg决定 源mem/reg2;d=1时,由mod、r/m决定源 mem/reg2,reg决定目的mem/reg1,虚线框中的位移量 根据寻址方式确定其有无。0 0 0 0 0 0 d wmod reg r/m11 2. ADD mem/reg,data 把存储在代码段中的立即数与指定的寄存

8、器或 存储单元的内容相加,结果存放于寄存器或存储 单元中。指令的机器语言为: 其中第一字节的100000及第二字节的000均为 操作码。W=0时作字节运算;w=1时作字运算。当 w=0时,S位无效;当w=1时,S=0时立即数为16位 ;而S=1时由8位立即数的低位符号扩展形成16位 立即数。位移量则根据寻址方式确定其有无。1 0 0 0 0 0 s wmod 0 0 0 r/m12 3. ADD ac,data 把存储在代码段中的立即数与AL(W=0时)或 AX(W=1时)中的内容相加,结果送回AL或AX中 。指令的机器语言为: 其中000001为操作码,S位指定为0。W=0时为 字节操作,使

9、用AL寄存器;W=1时为字操作,使 用AX寄存器。当W=1时有data高位字节。 下面用具体例子来说明加法指令的几种寻址方 式及其机器语言表示:0 0 0 0 0 1 0 w13 例 ADD CL,BH 机器语言为: 如指令执行前: (CL)=29H, (BH)=4DH,则指令 执行后(CL)=76H,(BH)则保持原值不变。 注:这是采用第一种指令格式REG为目的操作数字节运算寄存器方式Reg CLR/m BH14 例 ADD BH,CL 机器语言为: 如指令执行前: (CL)=29H,(BH)=4DH ,则指令执行后(BH)=76H,而(CL)则保持 原值不变。Reg 为 目 的 操 作

10、数字 节 运 算寄 存 器 方 式Reg BHR/m CL15 例 ADD DISPBXDI,DX 机器语言为: 如指令执行前: (BX)=0892H,(DI)=59A3H,(DS )=2000H,(DX)=04EDH,(2857A)=0029H可求得目的操作数地址 =20000+0892+59A3+2345=2857AH 指令执行后,(2857AH)=0029+04ED=0516H,(DX) 的内容则不变。Reg 为源 操作 数字 运 算Reg DXEA=(BX)+(DI)+D16低位在前16 例 ADD DISPBXDI,-105D 机器语言为: 如指令执行前(2857A)=0029H,低

11、位立即数 经符号扩展后为0FF97H,则指令执行后(2857A )=0029+0FF97=0FFC0H。低位数据符号扩展字 操 作EA=(BX)+(DI)+D1617 例 ADD AX,0123H 机器指令为: 如指令执行前(AX)=4567H,则指令执行后(AX) =4567+0123=468AH。这里的机器指令为长格式(格式2)的表 示法,这条指令也可用短格式(格式3)表示为: 从上面的例子可以看出,即使是同一种指令,不同的寻址方 式也会使机器指令占据不同的存储空间。16 位 立 即 数寄 存 器 方 式R/m AX16 位 立 即 数183.2 程序占有的空间和执行时间 由于指令是存储在

12、存储器中的,因此运算器要执行指令就 需要先访问存储器,把指令取到控制器中进行分析。 一方面,80X86的机器指令是可变字节指令,即不同指令 或不同寻址方式的机器指令长度不同。一条16位格式指令的 长度可为17个字节,32位指令则可达14个字节,如计入前 缀字节长度还会增加。这样程序量越大,占有的存储空间也 越大。 另一方面,当程序在计算机上运行时,访问存储器取得操 作数或存放结果需要时间。运算器执行指令也需要时间,一 条指令的执行时间是取指令、取操作数、执行指令及传送结 果各个阶段所需时间的总和。 完成同样功能的不同程序,可能在占有存储空间和执行时 间上有很大差别。因此,在编程时,如果对程序所

13、占有的空 间或程序的执行时间要求不高,那就只要根据题意编制出合 乎要求的程序就可以了。 193.3 80X86的指令系统80X86的指令系统可以分为以下6组: 数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制与杂项操作指令203.3.1数据传送指令 数据传送指令负责把数据、地址或立即数传送 到寄存器或存储单元中。它又可分为五种。 1.通用数据传送指令MOV传送MOVSX带符号扩展传送MOVZX带零扩展传送PUSH进栈POP出栈PUSHA/PUSHAD所有寄存器进栈POPA/POPAD所有寄存器出栈XCHG交换21(1) Mov传送指令指令助记符 MOV 指令格式: MOV

14、 DEST,SRC指令功能:将源操作数送到目的地址中。指令执行完 后只改变目的操作数的内容,源操作数保持不变。指令执行完后状态标志位不受影响。 数据传送指令注意几点:1)MOV指令的两个操作数可以同时是字节或字2)目的操作数不能为立即数3)两个操作数不能同时为存储器操作数。 4)立即数不能直接传送给段寄存器5)段寄存器之间不能直接传送数据22 MOV指令的机器语言可以有7种格式: 1) MOV mem/reg1,mem/reg2当然双操作数指令不允许两个操作数都使用存储器,因而两 个操作数中必须有一个是寄存器。不允许指定段寄存器。 2)MOV reg,data不允许指定段寄存器。 3)MOV

15、ac, mem 4)MOV mem,ac 5)MOV segreg,mem/reg不允许使用CS寄存器,这条指令执行完后不响应中断,要等 下一条指令执行完后才可能响应中断。 6)MOV mem/reg,segreg 7)MOV mem/reg,data这种方式的目的操作数只用存储器寻址方式不用寄存器方式 。mem:存储器; regi:任意寄存器;reg:指定寄存器 data:立即数 ac:累加器; segreg:段寄存器23数据传送指令MOV例:将立即数传送到通用寄存器MOVAL,1FHMOVAX,2345H例:将立即数传送到存储器中MOV DA_BYTE,0FEH MOV ARYBX,1234H例:寄存器之间的数据传送MOV AH,BLMOVDS,AX例:寄存器与存储器之间的数据传送MOV CL,DA_BYTE MOVTABBXDI,AX24例3.20 MOV AX, DATA_SEGMOV DS, AX 段地址必须通过寄存器(如AX寄存器)送到DS寄存器。 例3.21 MOV AL, E把立即数(字符E的ASCII码)送到AL寄存器。 例3.22 MOV BX, OFFSET TABLE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号