1.内存中字的存储
由于内存单元是字节单元,所以一个字要用两个连续的内存单元来存放,低位字节放在低地址单元中,高位字节放在高地址单元中。
字单元:即存放一个字型数据(16位)的内存单元,由两个连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。
任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可堪称一个地址为N的字单元中的高位字节单元(N+1)和低位字节单元(N)。
2.DS和[address]
CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址,在8086CPU中,内存地址由段地址和偏移地址组成。8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。
如:mov al,[0]中 “[address]”表示一个内存单元,“例中[address]”中的0表示内存单元的偏移地址。在mov指令执行时,8086CPU自动取ds中的数据为内存单元的段地址。 [mov 寄存器名,内存单元]:将内存单元中的内容送入寄存器。 [mov 内存单元,寄存器名]将寄存器中的内容送入内存单元。
如何把一个数据送入寄存器呢?因为ds是一个段寄存器,而8086CPU不支持将数据直接送入段寄存器的操作,所以,只好用一个寄存器来进行中转,即先将段地址送入一个一般的寄存器,如bx,再将bx中的内容送入ds。
3.字的传送
因为8086CPU是16位机构,有16根数据线,所以,可以一次性传送16位的数据,也就说一次性传送一个字。只要在mov指令中给出16位的寄存器就可以进行16位数据的传送。(字单元)
4.mov、add、sub指令
mov 指令形式
mov 寄存器,数据 如mov ax,8
mov 寄存器,寄存器 如mov ax,bx
mov 寄存器,内存单元 如mov ax,[0]
mov 内存单元,寄存器 如mov [0],ax
mov 段寄存器,寄存器 如mov ds,ax
mov 寄存器,段寄存器 如mov ax,ds
mov 内存单元,段寄存器 如mov [0],cs
add和sub 指令形式
add 寄存器,数据 sub寄存器,数据
add 寄存器,寄存器 sub寄存器,寄存器
add 寄存器,内存单元 sub寄存器,内存单元
add 内存单元,寄存器 sub寄存器,内存单元
5.数据段
略,详见书本
注:如累加一个字型,因为字型数据占两个单元,所以偏移地址类似(0、2、4)
- [游客] 石职wsd专升本da卡 11/18 15:28
- [游客] 石职wsd专升本da卡 11/18 15:28
- [游客] 似乎这个站点没有什么新鲜的活力了 07/23 18:22
- [游客] 博主有没有学习群 07/23 19:14
- [游客] 可以的 07/23 19:13
- [游客] aaaaaaaaaaaa 09/19 13:49
- [jinshuwen] 很有收获! 01/19 16:25
- [hujie0421] 谢谢分享 02/01 05:14
- [jiejie] 来学习一下 10/01 11:31
- [yexueyao] 谢谢,我是学习计算机专业的,汇编语言一学期几乎没听懂过,看你的日记,很有帮助,我会加油学的,期末要拿 11/12 10:14
- [游客] 嘉義定點外約Line: a57963#嘉義學生妹外約 桃園中壢外送茶Line: a57963#中壢外 11/29 15:39
- [游客] 嘉義定點外約Line: a57963#嘉義學生妹外約 桃園中壢外送茶Line: a57963#中壢外 11/29 15:39
- [游客] 嘉義定點外約Line: a57963#嘉義學生妹外約 桃園中壢外送茶Line: a57963#中壢外 11/29 15:38
- [游客] 嘉義定點外約Line: a57963#嘉義學生妹外約 桃園中壢外送茶Line: a57963#中壢外 11/29 15:38
- [bingfeixue] masm32 汇编器具体怎么用啊 04/28 09:24
[ 游客 发表于 2012-07-05 11:06 ]
吗,吗
[ 游客 发表于 2012-07-05 11:07 ]
赞一个