汇编学习笔记(六)

第三章:寄存器(内存访问)
问题:
  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保存起来……又想到了栈和递归的现场保存

 

未完续待……

posted @ 2020-02-26 16:33  秦_殇  阅读(131)  评论(0编辑  收藏  举报