这里写自定义目录标题
第3章 寄存器(内存访问)
3.1 内存中字的存储
看图
N地址单元是什么有意思?
3.2 DS 和[address]
作用?
如何将10000H的数据读到al中?
原理
为什么不能直接mov ds,1000h,硬件不可以这样操作
3.3字的传送
4e20h两个字节
4e一个字节
20一个字节
例子
减法
3.4 mov、add、sub指令
mov指令的几种形式
mov寄存器,段寄存器
mov ax,ds
mov内存单元,段寄存器
mov 段寄存器,内存单元 不行
add
3.5.数据段
累加前三个数据到al中
累加前三个数据到ax中
3.1~3.5小结
3.6 栈
3.7 CPU 提供的栈机制
SS和SP和push过程
栈空指向哪里?最高地址的下一个单元。
push
pop
3.8 栈顶超界的问题
3.9 push、pop 指令
重要例题
解释
总结
3.10 栈段
如果将10000H~1FFH这段空间当作栈段,初始状态栈是空的,此时
SS=1000H,SP=?
一个栈段最大可以设为多少?为什么?
64KB=2^16B
16代表16个字节。
16个空间,16个字节。
栈,每次push和pop都要用两个空间。
段的小结
检测题
pop [e]
把栈顶指针指向的东西
赋值给[e]
mov ax,1000H
mov ss,ax
mov sp,0H
实验2 用机器指令和汇编指令编程
1、D命令的其他用法。
查看段寄存器中的内存。
从SA:偏移地址开始的内存区间中的数据
2、在E、A、U命令中使用段寄存器。
算栈空间,sp,10,10-1,得到F
出现问题,mov sp,10呢?
为什么?
实验2
修改的内存单元的地址是,内容为?
它在问什么?
看代码sp是0100
Push后sp=sp-2
所以是00FE
Push后sp=sp-2
所以是00FC
内容就ax,bx,这就没什么了。
2、分析,为什么2000:0~2000:f中的内容会发生改变
其实这些就是寄存器的信息,因为t是会使程序中断的,了解中断请跳看到12章。
所以每次执行t的时候,程序都会保存一次寄存器的信息。