【最主要的基础部分:寄存器+物理地址表示法+Debug】

1.寄存器

8086CPU有14个寄存器:
通用寄存器:AX、BX、CX、DX
变址寄存器:SI、DI
指针寄存器:SP、BP
指令指针寄存器:IP
段寄存器:CS、SS、DS、ES
标志寄存器:PSW
8086CPU所有的寄存器都是16位的,可以存放两个字节。

通用寄存器——以AX为例

1.最大值:2的16次方-1(FFFFH)
例:在AX中存储18D:
12H:10010B
2.通用寄存器分为两个独立的8位寄存器使用,AX可以分为AH和AL,同理BX、CX、DX
3.“字”在存储器中的存储:8086的字长为16bit
这个字的高位字节存在这个寄存器的高8位寄存器
这个字的低位字节存在这个寄存器的低8位寄存器

2.物理地址

8086CPU的解决办法

用两个16位地址(段地址、偏移地址)合成一个20位的物理地址。

地址加法器合成物理地址的方法

物理地址=段地址✖16+偏移地址(即段地址左移4位+偏移地址)

内存分段表示法

如:10000H到100FFH单元组成一个段
起始地址:10000H
段地址:1000H;大小:100H

如:10000H到1007FH单元组成一个段,10080H到100FFH单元组成一个段
起始地址:10000H和10080H
段地址:1000H和1008H,大小:80H

1.段地址✖16必然是16的倍数,所以一个段的起始地址也一定是16的倍数
2.偏移地址位16位,16位地址的寻址能力为64K,所以一个段的长度最大为64K

物理地址 段地址 偏移地址
21F60H 2000H 1F60H
2100H 0F60H
21F0H 0060H
21F6H 0000H
1F00H 2F60

在8086PC机中存储单元地址的表示方法
如:数据在21F60单元中,段地址是2000H,说法:
(1)数据存在内存2000:1F60单元中
(2)数据存在内存的2000H段中的1F60H单元中

段地址很重要!——用专门的寄存器存放段地址
4个段寄存器:
CS——代码段寄存器
DS——数据段寄存器
SS——栈段寄存器
ES——附加段寄存器

3.Debug

启动Debug

在DOS提示符下输入命令:debug
在DOSBox下

1.用R命令查看、改变CPU寄存器的内容

1.r——查看寄存器内容
在这里插入图片描述

2.r 寄存器名——改变指定寄存器内容
在这里插入图片描述

2.用D命令查看内存中的内容

1.d——列出预设地址内存处的128个字节的内容
在这里插入图片描述
2.d 段地址:偏移地址——列出内存中指定地址处的内容
请添加图片描述
d 段地址:偏移地址 结尾偏移地址——列出内存中指定地址范围内的内容
请添加图片描述

3.用E命令改变内存中的内容

1.e 段地址:偏移地址 数据1 数据2 …
在这里插入图片描述

2.e 段地址:偏移地址
逐个寻问式修改
空格——接受,继续
回车——结束

4.用U命令将内存中的机器指令翻译成汇编指令

有汇编指令
mov ax,0123H
mov bx,0003H
mov ax,bx
add ax,bx
对应的机器码为
B8 23 01
BB 03 00
89 D8
01 D8
步骤
1.e 地址 数据——写入
2.d 地址——查看
3.u 地址——查看代码
在这里插入图片描述

5.用A命令以汇编指令的格式在内存中写入机器指令

有汇编指令
mov ax,0123H
mov bx,0003H
mov ax,bx
add ax,bx
对应的机器码为
B8 23 01
BB 03 00
89 D8
01 D8
步骤
a 地址——写入汇编指令
d 地址——查看数据
u 地址——查看代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.用T命令执行机器指令

t——执行CS:IP处的指令
mov ax,0123H
mov bx,0003H
mov ax,bx
add ax,bx
在这里插入图片描述

6.用Q命令退出Debug

猜你喜欢

转载自blog.csdn.net/RSssr/article/details/124024736