提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
寄存器与内存-debug详细的命令使用
前言
一、内存的分段表示法
8086CPU用“(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址。
内存并没有分段,段的划分来自于CPU!!!

1.同一段内存,多种分段方式

起始地址( 基础地址)为10000H,段地址为1000H,大小为100H

起始地址( 基础地址 )为10000H和10080H,段地址为1000H 和1008H,大小均为80H。
(1)段地址×16 必然是 16的倍数,所以一个段的起始地址也一定是16的倍数;
(2)偏移地址为16位,16 位地址的寻址能力为 64K,所以一个段的长度最大为64K。
2.用不同的段地址和偏移地址形成同一个物理地址

偏移地址16位,变化范围为0~FFFFH,用偏移地址最多寻址64KB。
例:给定段地址2000H,用偏移地址寻址的范围是:20000H~2FFFFFH,共64K
在8086CPU机中存储单元地址的表示方法:
例:数据在21F60H内存单元中,段地址是2000H,说法
(a)数据存在内存2000:1F60单元中;
(b)数据存在内存的2000H段中的1F60H单元中。
段地址很重要!——用专门的寄存器存放段地址。
4个段寄存器:CS - 代码段寄存器
DS - 数据段寄存器
SS - 栈段寄存器
ES - 附加段寄存器
偏移地址可以用多种方法提供——8086丰富的取址方式。
把这些取址方式用活了那么汇编语言就掌握了!!!
二、Debug的使用
Debug是DOS系统中的著名调试程序,也可以在windows系统实践模式下。
使用Debug程序,可以查看CPU各种寄存器中的内容、内存的情况,并且在机器指令级跟踪程序的运行!
Debug就是传奇!

Debug能做些什么?
用R命令查看、改变CPU寄存器的内容
用D命令查看内存中的内容
用E命令改变内存中的内容
用U命令将内存中的机器指令翻译成汇编指令
用A命令以汇编指令的格式在内存中写入机器指令
用T命令执行机器指令
如果对DOS系统中的Debug环境不知道怎么搭建的可以看一下小编之前写过的文章http://t.csdn.cn/Kukdr
用R命令查看、改变CPU寄存器的内容
R- 查看寄存器内容
R 寄存器名 - 改变指定寄存器内容

用D命令查看内存中的内容
D - 列出预设地址内存处的128个字节的内容
D 段地址:偏移地址 - 列出内存中指定地址处的内容
D 段地址:偏移地址 结尾偏移地址 - 列出内存中指定地址范围内的内容

用E命令改变内存中的内容
E 段地址:偏移地址 数据1 数据2 …
E 段地址:偏移地址
逐个询问式修改
空格 - 接受,继续
回车 - 结束


用U命令将内存中的机器指令翻译成汇编指令
有汇编指令
mov ax, 0123H
mov bx, 0003H
mov ax, bx
add ax, bx
对应的机器码为
B8 23 01
BB 03 00
89 D8
01 D8
e 地址 数据 - 写入
d 地址 - 查看
u 地址 - 查看代码

用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 地址 - 查看代码


用T命令执行机器指令
t - 执行CS:IP处的指令
mov ax, 0123H
mov bx, 0003H
mov ax, bx
add ax, bx

用Q命令退出Debug
q - 退出Debug
总结
想要学好汇编语言关键在于在dos环境下进行debug的练习,只有通过自己的实践才能够学好汇编语言。
