今天还是些基础的东西,继续熟悉和玩debug
mov指令可完成的传送:
(1)将数据直接送入寄存器;
(2)将一个寄存器中的内容送入另一个寄存器
(3)将内存单元中的内容送入寄存器([{0}] {0}所表示的数字为偏移地址
,而段地址由段地址寄存器ds中的内容决定)
8086不支持直接将数据送入段寄存器,所以,必须先将地址值送入通用寄存器,
再由通用寄存器存入段寄存器
发觉debug 中用-a写代码,-t执行(如果对-t后不加参数只能写一条
执行一条,不能批量),所以要执行几条指令应将指令所占字节数作为
参数写在 -t后,例如 要执行的代码占10个字节,则应为-t A。
段寄存器只有不能用立即数给它传值,其他都是可以的
在8086PC机中我们可以将一组长度为N(N<=64K)、地址连续、起始地址为
16的倍数的内存单元作为专门存储数据的内存空间,从而定义一个数据段
栈以高地址作为栈底,低地址作为栈顶
栈顶的段地址存放在段寄存器SS中,偏移地址存放在SP中
当栈为空的时候,栈中没有元素,也就不存在栈顶元素,所以SS:SP只能指向
栈的最底部单元下面的单元,该单元的偏移地址为栈最底部的字单元的偏移
地址+2(这其实和我们在数据结构中将空的情况设为-1类似)
pop和push 后面可直接接内存单元、通用寄存器、段寄存器
入栈一个字,sp减2,出栈一个字,sp加2
push,pop等栈操作指令,改变的只是SP,也就是说栈顶最大变化范围为
0~FFFFH
Debug在执行修改寄存器SS的指令时,下一条指令也跟着执行。
明天可以开始写程序了~~~太爽了