汇编20111109

1  指令的组成

  操作码+操作数

操作码说明计算机要执行说明操作,移位、传送、跳转、运算等,不可缺少

操作数是指令执行的参与者,即操作的对象

有些指令不需要操作数,有些需要操作数,通常的指令需要1到2个操作数,有的需要3到4个。

每个指令用助记符表示,如MOV,LEA等。对应着一个机器指令的二进制编码。

 

寻址方式:

指令系统设计到了多种操作数的来源,寻找操作数的过程就是操作数寻址,操作数选择哪一种寻址,直接影响到机器运行的效率。

如何寻址一个操作数对程序设计很重要。

 

8086机器代码格式:

1-2字节的操作码 ----  0-1个字节的mod reg r/m(表明采用的寻址方式) ------0/1/2字节的位移量(某些寻址方式对基地址的偏移量) -----0/1/2字节的立即数

运行-输入debug

-a

mov al,05

-u ;反汇编查看代码

-e 地址:偏移

编辑代码中的05,将05修改为99

再次执行-u查看反汇编代码   (注意,-u 100是从100地址出反汇编32个字节)

发现mov al,05已经改变为mov al,99

 

-------------------------------

mov ax,[BP+0];机器代码是8B 46 00

前一个字节8B是操作码

中间一个字节46(01 000 110 )是“mod reg r/m"字节

-reg =000 表示目的操作数是AX

-mod =01 和r/m =110 表示源操作数为【BP+D8】

最后一个字节就是8位偏移量[D8 ] 00

 

指令的助记符格式:

操作码 操作数1(目的操作数) ,操作数2(源操作数) ;注释

注意:当用BP时默认的段地址在SS中

【SI】表示把SI作为内存的便宜地址,段地址再DS中进行寻址。

-------立即数寻址方式

指令的操作数放在机器代码中,紧跟在操作码后,操作数作为指令的一部分存在主内存中

操作数叫立即数 IMM

常用来给寄存器赋值

 

---------寄存器寻址方式

操作数放在CPU的内部寄存器REG中,可以是8位寄存器R8

AH,AL,BH,BL....

16位寄存器

AX,BX,,,,,

4个段寄存器

CS,DS,SS ,ES

如:mov ax,bx

---------存储器存执方式

1 直接寻址方式

2 寄存器间接寻址方式

3 寄存器相对寻址方式

4 基址变址寻址方式

5 相对基址变址寻址方式

麻的,恨死起名字的家伙了。。。不记这玩意

 

直接寻址:有效地址再指令中直接给出

MOV AX,[2000H]     ;假设DS值为3000H,则实际将32000H处的内容赋值给AX

段超越MOV  AX,ES:[2000H]

 

寄存器间接寻址方式:

明天继续,,,妈的,时间不够用啊。。。。

寄存器相对寻址:

 MOV AL,1000[bx],相当于BX+1000+DS*2^4 的内容给了AL

相对基址变址寻址方式

有效地址=bx/bp+si/di+8/16位偏移量之和

 

 汇编语言指令格式:

标号:指令助记符 目的操作数 源操作数 ;注释

 

 

 

Inter 8086 指令系统共有117条基本指令,可分为6个功能组

1 数据传送类指令

2 算数运算类指令

3 位操作类指令

4 串操作类指令

5 控制转移类指令

6 处理机类控制指令

 

 

 

掌握8086的寄存器组和存储器组织

掌握8086的寻址方式

掌握DEBUG程序的使用和调试指令和程序段的方法

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值