汇编语言-学习记录(三)

教材:《汇编语言-第四版》王爽老师

第三章

1、CPU中,用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节。

2、字单元:存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。如,2、3两个内存单元,被称为2地址字单元。

3、8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。

mov bx,1000H

mov ds,bx

mov al,[0]        ;[...] 表示内存单元的偏移地址

上述指令是将 10000H 中的数据读到 al中

8086CPU 自动取ds中的数据位内存单元的段地址

8086CPU 并不支持将数据直接送入段寄存器的操作

4、字的传送

- mov bx,2000H
  mov ds,bx
  mov al,[0]         ; 传送一字节的数据,将20000H处的数据传送到 al


- mov bx,2000H
  mov ds,bx
  mov ax,[0]         ; 传送一字的数据,将20001H 和 20000H 处的数据传送到 ax

5、mov、add、sub

-mov-  <数据只能和寄存器进行交互,且不能与段寄存器进行交互>

mov    寄存器, 数据
mov    寄存器, 寄存器
mov    寄存器, 内存单元
mov    内存单元,寄存器
mov    段寄存器, 寄存器
mov    寄存器, 段寄存器
mov    内存单元, 段寄存器
mov    段寄存器, 内存单元

-add-  <段寄存器不参加 add 和 sub 运算,内存单元不能和内存单元进行 add 和 sub 运算>

add    寄存器, 数据
add    寄存器, 寄存器
add    寄存器, 内存单元
add    内存单元, 寄存器

-sub-

sub    寄存器, 数据
sub    寄存器, 寄存器
sub    寄存器, 内存单元
sub    内存单元, 寄存器

6、8086CPU提供的栈机制

-1- 8086CPU的入栈和出栈操作都是以字位单位进行的

-2- push ax 将ax寄存器的值压入栈中

> SP = SP-2,SS:SP 指向当前栈顶前面的单元,以当前栈顶前面的单元位新的栈顶
> 将 ax中的内容送入 SS:SP指向的内存单元处,SS:SP此时指向新栈顶

-3- pop ax 将栈顶的值弹出到ax寄存器

> 将 SS:SP 指向的内存单元处的数据送入ax中
> SP = SP+2,SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶

-4- 若将 10000H ~ 1000FH 这段空间当作栈,初始状态栈时空的,此时,SS=1000H,SP=?

> 此时的栈顶应该为 0010H,即此时的 SS=1000H,而 SP= 000FH+0001H =0010H

-5- 当pop操作后,SS:(SP+2)处的值还存在,只是不在栈中了。当再次执行push时,会将里面的数据覆盖。

7、8086CPU不保证我们对栈的操作不会越界。8086CPU只记录栈顶,栈空间的大小需要我们自己管理。

9、push、pop

-1-

push    寄存器    ;将一个寄存器中的数据入栈
pop    寄存器    ;出栈,用一个寄存器接收出栈的数据

-2-

push    段寄存器    ;将一个段寄存器中的数据入栈
pop    段寄存器    ;出栈,用一个段寄存器接收出栈的数据

-3-    

push    内存单元    ;将一个内存单元中的数据入栈
pop    内存单元    ;出栈,用一个内存单元接收出栈的数据

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值