汇编网首页登录博客注册
gehuazhen的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  

[2012-03-11 16:50] mov指令

标准机器代码示例

1/2字节 0/1字节 0/1/2字节 0/1/2字节

操作码 mod reg r/m 位移量 立即数

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

•前一个字节8B是操作码(含w=1表示字操作)

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

–reg=000表示目的操作数为AX

–mod=01和r/m=110表示源操作数为[BP+D8]

•最后一个字节就是8位位移量〔D8=〕00

8086指令系统概述

•Intel 8086指令系统共有二万多条指令,用了一百多个助记符 ,可分成6类功能组:

① 数据传送类指令

② 算术运算类指令

③ 逻辑运算(位操作)类指令

④ 串操作类指令

⑤ 控制转移类指令

⑥ 处理机控制类指令

学习指令的注意事项

•指令的功能——该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式

•指令支持的寻址方式——该指令中的操作数可以采用何种寻址方式

•指令对标志的影响——该指令执行后是否对各个标志位有影响,以及如何影响

•其他方面——该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等

指令格式的通用规定

•双操作数指令,除串操作指令外,不允许两个都是存储器。

•立即数,CS不能做目的操作数。

•IP不能显示地用做操作数。

1.数据传送类指令

•数据传送是计算机中最基本、最重要的一种操作

•传送指令也是最常使用的一类指令

•传送指令把数据从一个位置传送到另一个位置

•除标志寄存器传送指令(SAHF,POPF)外,均不影响标志位

•重点掌握 MOV PUSH POP XCHG IN OUT XLAT LEA

传送指令MOV(move)

1.立即数送寄存器或主存 MOV reg/mem , im

mov al , 4 ; al←4,字节传送

mov cx , 0ffh ; cx←00ffh,字传送

mov si , 200h ; si←0200h,字传送

mov byte ptr [si] , 0ah ; byte ptr 说明是字节操作

mov word ptr [si+2 ], 0bh ; word ptr 说明是字操作

# 注意立即数是字节量还是字量

# 明确指令是字节操作还是字操作

2.寄存器送(段)寄存器或主存 MOV reg/mem/seg , reg;
mov ax , bx ; ax←bx,字传送

mov ah , al ; ah←al,字节传送

mov ds , ax ; ds←ax,字传送

mov [bx] , al ; [bx]←al,字节传送

3.主存送(段)寄存器 MOV reg/seg , mem;
mov al , [bx]

mov dx , [bp] ; dx←ss:[bp]

mov es , [si] ; es←ds:[si]

# 不存在存储器向存储器的传送指令

4.段寄存器送寄存器或主存 MOV reg/mem , seg;

mov si , ds

mov ax , es ; ax←es

mov ds , ax ; ds←ax←es

# 对段寄存器的操作有一些限制MOV指令传送功能:

非 法 传 送 种 种

1.两个操作数的类型不一致 –-----例如源操作数是字节,而目的操作数是字;或相反

• 绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令 MOV AL , 050AH;非法指令:050Ah为字,而AL为字节

• 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型

• 对于存储器单元与立即数同时作为操作数的情况,必须显式指明;

byte ptr 指示字节类型 , word ptr 指示字类型。

2.两个操作数不能都是存储器 –------传送指令很灵活,但主存之间的直接传送却不允许

• 8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现

mov ax , buffer1;ax←buffer1(将buffer1内容送ax)

mov buffer2 , ax;buffer2←ax;这里buffer1和buffer2是两个字变量、;实际表示直接寻址方式

3.段寄存器的操作有一些限制 –----段寄存器属专用寄存器,对他们的操作能力有限

• 不允许立即数传送给段寄存器 MOV DS,100H;非法指令:立即数不能传送段寄存器

• 不允许直接改变CS值 MOV CS,[SI] ;不允许使用的指令

• 不允许段寄存器之间的直接数据传送 MOV DS,ES;非法指令:不允许段寄存器间传送
评论次数(1)  |  浏览次数(348)  |  类型(默认类型) |  收藏此文  | 

[  tomato   发表于  2012-03-11 23:22  ]

比这些知识更重要的是机理,建议博主参加本网站的汇编语言学习活动,从第一章开始认真学习,最终会掌握根本。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码