pcasm-book读书笔记1

来源:互联网 发布:淘宝mg小象 编辑:程序博客网 时间:2024/06/05 10:19
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
0 0
原创粉丝点击