汇编语言
段寄存器
8086 CPU有四个段寄存器:
CS, DS, SS, ES
段寄存器用来提供段地址
CS和IP
CS: 代码段寄存器
IP: 指令指针寄存器
修改CS,IP: jmp 段地址:偏移地址
仅修改IP的内容:
?? jmp 某一合法寄存器
?? jmp ax 用ax中的值修改IP
下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
答:一共修改四次
第一次:读取mov ax,bx之后
第二次:读取sub ax,ax之后
第三次:读取jmp ax之后
第四次:执行jmp ax修改IP
最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H
debug
-r: 查看寄存器内容
-r ax :修改ax的内容
-t : 执行指令
-d :查看内存中内容
-u: 查看内存中内容,将机器指令翻译成汇编指令
-e : 改写内存中内容(机器指令)
-a: 以汇编指令的格式在内存中写入一条机器指令
DS和[address]
DS寄存器通常用来存放要访问的数据的段地址
若要读区10000H单元内容到寄存器:
mov bx,1000H mov ds,bx mov al, [0]
不可以直接 mov ds,1000H
8086cpu 不支持直接将数据送入段寄存器
将al中数据送入内存单元10000H:
mov bx, 1000H mov ds, bx mov [0], al
8086cpu有16根数据线,一次性可以传一个字
mov
mov 段寄存器,寄存器 是可以的
但是 mov 寄存器, 段寄存器 可以吗? 答案是可以。
栈
段寄存器SS: 存放栈顶的段地址
寄存器SP:存放栈顶的偏移地址
任意时刻,SS:SP指向栈顶元素
mov ax, 1000H mov ss,ax // 不能直接mov数据到段寄存器 mov sp,0010H push ax push bx push ds
相关推荐
风月无古今 2020-06-28
Emiter0 2020-06-28
李辉 2020-06-08
风月无古今 2020-06-06
duling 2020-06-03
PLA 2020-05-25
风月无古今 2020-05-15
duling 2020-05-15
Emiter0 2020-05-10
Emiter0 2020-05-09
andyljn 2020-05-06
shunelly 2020-05-05
Emiter0 2020-04-30
李辉 2020-04-30
李辉 2020-04-25
李辉 2020-04-07
andyljn 2020-03-27
Emiter0 2020-03-08
woxmh 2020-03-04