1.看的小甲鱼的视频。
2.我用的是 mac笔记本。今天把dos装上了,用来debug。装的教程参考的这:https://blog.csdn.net/Zach_z/article/details/78171329
重点在于:用 mount c (资源地址) 挂上资源,后进入 c盘,运行debug。
3.知识点 :
3.1 汇编语言对大小写不敏感
3.2 debug的六个功能:
R 查看、改变寄存器的内容。( r ax )
D 查看 内存中的内容
E 改写 内存中的内容 (数字、机器码)
A 以汇编指令的格式在内存中写一条机器指令
T 执行一条机器指令
U 将内存中的机器指令翻译成汇编指令
3.3 CS 为代码段寄存器 放的是指令的段地址 和 IP为 指令指针(控制)寄存器 放的是 指令的偏移地址。
CS和IP 指示了CPU当前要读取的指令的地址。
3.4 CPU要访问内存单元时,要得到内存单元的物理地址
物理地址=段地址*16+偏移地址 (16进制乘16,相当于向左进一位 ——> N进制的数*N 相当于左移1位)
原因:(8086CPU)内部的总线为16位,要与外部20位的地址总线转换。 (二进制 * 16相当于偏移 4位,总共就为20位了)
3.5 任意两个连续的内存单元(N,N+1)可以看成地址为N的字单元中,地位字节 单元(N)和高位字节单元(N+1)。
4.今天的练习题: 内存情况如下,写出指令执行后寄存器内的值。
解题思路,一、内存里填内容 e 二、写汇编 a 三、逐步执行t
e 1000:0 23 11 22 66 (连续的内存空间)
r
a cs:ip mov ax,1000 //把段地址数据放入通用寄存器中
cs:ip mov ds,ax //把通用数据的内容放入段寄存器中
cs:ip mov ax,[0] // 把段内偏移地址为0的 内存单元的内容送入寄存器中
cs:ip mov bx,[2]
....
t //单步执行
原文:https://www.cnblogs.com/30ends/p/9127900.html