第五章总结

两个约定:

约定符号():表示寄存器或者一个内存单元的内容,如(ax)表示ax中内容,(bx)表示bx内容,(20000H)表示内存20000H单元的内容。

约定符号idata表示常数。

[bx]用法:[bx]为一个内存单元,其中bx是偏移地址,也就是内存ds:bx处

如mov  ax,[bx]就是把ds:bx处的值赋值给ax

loop指令:

格式:loop 标号

标号有些类似在C语言中goto的用法.

CPU执行loop时,先进行cx=cx-1,然后判断cx如果不为0就跳转至标号处执行程序,如果为0就继续向下执行。

cx中存放循环次数.

例如:

mov ax 2
mov cx,11

s:add ax,ax

loop s

就可以计算2^12。

我们也可以在debug中通过t,p,r命令来单步调试,观察程序运行的过程。

段前缀:在访问内存单元的指令中,用于显式指明内存单元的段地址的ds,cs,ss,es.

在8086中,0:200-0:02ff的256个字节的空间中,一般不会被别的程序使用,因此我们可以用debug查看一下,如果全部是0,则说明dos和其他合法程序没有使用这里,我们可以使用。

而如果向其他空间写入可能导致一些异常,甚至dos崩溃。

原文地址:https://www.cnblogs.com/asm085/p/9927664.html