文章目录
前言
参考书籍:
王爽。汇编语言。北京:清华大学出版社, 2013:1-1
本人菜狗一枚,不敢咬文嚼字,只能站在巨人的肩膀上窥探一下未曾了解的世界。
描述了单元长度的标号
assume cs:code
code segment
a: db 1, 2, 3, 4, 5, 6, 7, 8
b: dw 0
start:
mov si, offset a
mov bx, offset b
mov cx, 8
s:
mov al, cs:[si]
mov ah, 0
add cs:[bx], ax
inc si
loop s
mov ax, 4c00h
int 21h
code ends
end start
程序中,code、a、b、start、s 都是标号。这些标号仅仅表示了内存单元的地址。
另一种标号,不但表示内存单元的地址,还表示了内存单元的长度,即表示在此标号处的单元尺寸(字节/字/双字)。
assume cs:code
code segment
a db 1, 2, 3, 4, 5, 6, 7, 8
b dw 0
start:
mov si, 0
mov cx, 8
s:
mov al, a[si]
mov ah, 0
add b, ax
inc si
loop s
mov ax, 4c00h
int 21h
code ends
end start
标号 a、b 后面没有":",它们是同时描述内存地址和单元长度的标号。
-
标号 a,描述了地址 code:0,和从这个地址开始,以后的内存单元都是字节单元。
-
标号 b,描述了地址 code:8,和从这个地址开始,以后的内存单元都是字单元。
该指令可以代表一段中的内存单元。
比如对于程序中的 “b dw 0"
指令 | 等同于指令 |
---|---|
mov ax, b | mov ax, cs:[8] |
mov b, 2 | mov word ptr cs:[8], 2 |
inc b | inc word ptr cs:[8], 2 |