不匹配赋值等小细节

所谓细节决定成败,不能看不起基础知识哈。。今天呢就通过实验弄清了几个容易疏忽的小细节,记录如下:

1.debug的g指令用于下断点,再执行t指令就可以执行到断点。

2.16进制数最高位为字母,前面记得要加0

3.内存寻址时,如果隐含段前缀,则偏移应放在寄存器中:

(1)mov ax,[100h]                        ;等效于    mov ax,100h

(2)mov bx,100h

mov ax,[bx]                              ;将ds:0100h处的内容装入ax

(3) mov ax,ds:[100h]                     ;将ds:0100h处的内容装入ax

4,在debug中,mov  ax,[100]编译结果和(2)(3)相同

5.若隐含段前缀,则默认段前缀是ds

6.执行到loop时,cx先减1,然后判断cx是否为0,为0则退出循环

7,接下来这点容易出错误:

mov ax,ds:[100h]         ;取0100h,0101h两个字节单元(0100h处的内容装入al,0101h  处的内容装入ah,也就是一个字)装入ax

mov ax,10h             ;前面自动补0,即将0010h装入ax。这点很关键,ah中原来的值会  被0覆盖掉

mov  ds:[100h],ax        ;会写入一个字