汇编学习笔记(六)

第三章:寄存器(内存访问)
问题:
  call指令将 IP 保存在内存的哪里?ret可以拿回

一个字型数据存放在内存中可以由 2个连续的的内存单元组成

  • 高地址 单元存放 字型数据的 高位字节
  • 低地址 单元存放 字型数据的 低位字节

ds 一般用于数据访问,所以搞波实验,(学习进度就是这样降下来的)

实验一:

mov al, [0]
mov ax, [0]
mov al, [1]
mov ax, [1]

mov [0], ah
mov [0], al

  [0]的段地址存储在ds中
[xxxx]为偏移地址
需要配合 -d指令查看指定内存

实验二:

mov ax, 1000H
mov ds, ax
mov bl, [0]
mov bh, [2]
mov ax, bx
mov [0], ax

  通过 mov 指令 来修改 ds 中的段地址

这次实验比较失败,但是的确发现数据改变,

由于1000:0000~000f 中都是 00,所以我只能发现ax的发生变化

实验目的还是达到了

  

实验三:

mov ax, 0102H
mov bx, 0304H
mov cx, 1000H
mov ds, cx
mov [0], al
mov [1], ah
mov [2], bx
add dx, [0]
add dx, [1]
add dx, [2]
add dx, [3]
mov dx, 0
add dl, [0]
add dl, [2]
add dh, [1]
add dh, [3]
sub dh, dl

显然汇编代码不太好写我写错了四五次,最终还是看到了想要的结果,

偏移地址是依靠寄存器的位数来判断传输的是 字节 还是 字

编程的时候尤其要注意这一点

 

 

实验小结:数据长度需要特别特别特别注意
  字节数据在 内存中存放 1 为 01
  字型数据在 内存中存放 1 为 01 00

可以通过 mov [0], cs 将cs保存起来……又想到了栈和递归的现场保存

未完续待……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值