L1 db 0 ; byte labeled L1 with initial value 0
L2 dw 1000 ; word labeled L2 with initial value 1000
L3 db 110101b ; byte initialized to binary 110101 (53 in decimal)
L4 db 12h ; byte initialized to hex 12 (18 in decimal)
L5 db 17o ; byte initialized to octal 17 (15 in decimal)
L6 dd 1A92h ; double word initialized to hex 1A92
L7 resb 1 ; 1 uninitialized byte
L8 db "A" ; byte initialized to ASCII code for A (65)
L2就存储在L1之后的内存中
L9 db 0, 1, 2, 3 ; defines 4 bytes
L10 db "w", "o", "r", ’d’, 0 ; defines a C string = "word"
L11 db ’word’, 0 ; same as L10
L12 times 100 db 0 ; equivalent to 100 (db 0)’s
L13 resw 100 ; reserves room for 100 words
这些labels可以被用来在代码中访问数据
1 mov al, [L1] ; copy byte at L1 into AL
2 mov eax, L1 ; EAX = address of byte at L1
3 mov [L1], ah ; copy AH into byte at L1
4 mov eax, [L6] ; copy double word at L6 into EAX
5 add eax, [L6] ; EAX = EAX + double word at L6
6 add [L6], eax ; double word at L6 += EAX
7 mov al, [L6] ; copy first byte of double word at L6 into AL
由第7行看出,汇编器并不知道一个label所指向的数据的类型,所以编程人员需要自己确保数据类型的正确
所以看一下这句话:
mov [L6], 1 ; store a 1 at L6
会报错,为什么?因为不知道L6是一个字节还是一个字还是两个字
修正:
mov dword [L6], 1
L2 dw 1000 ; word labeled L2 with initial value 1000
L3 db 110101b ; byte initialized to binary 110101 (53 in decimal)
L4 db 12h ; byte initialized to hex 12 (18 in decimal)
L5 db 17o ; byte initialized to octal 17 (15 in decimal)
L6 dd 1A92h ; double word initialized to hex 1A92
L7 resb 1 ; 1 uninitialized byte
L8 db "A" ; byte initialized to ASCII code for A (65)
L2就存储在L1之后的内存中
L9 db 0, 1, 2, 3 ; defines 4 bytes
L10 db "w", "o", "r", ’d’, 0 ; defines a C string = "word"
L11 db ’word’, 0 ; same as L10
L12 times 100 db 0 ; equivalent to 100 (db 0)’s
L13 resw 100 ; reserves room for 100 words
这些labels可以被用来在代码中访问数据
1 mov al, [L1] ; copy byte at L1 into AL
2 mov eax, L1 ; EAX = address of byte at L1
3 mov [L1], ah ; copy AH into byte at L1
4 mov eax, [L6] ; copy double word at L6 into EAX
5 add eax, [L6] ; EAX = EAX + double word at L6
6 add [L6], eax ; double word at L6 += EAX
7 mov al, [L6] ; copy first byte of double word at L6 into AL
由第7行看出,汇编器并不知道一个label所指向的数据的类型,所以编程人员需要自己确保数据类型的正确
所以看一下这句话:
mov [L6], 1 ; store a 1 at L6
会报错,为什么?因为不知道L6是一个字节还是一个字还是两个字
修正:
mov dword [L6], 1
本文介绍汇编语言中如何定义和初始化不同类型的变量,包括字节、字和双字等,并展示了如何通过标签来访问这些数据。此外,还讨论了在进行数据操作时程序员需要注意的数据类型匹配问题。
1万+

被折叠的 条评论
为什么被折叠?



