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
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
- pcasm-book读书笔记1
- pcasm book notes
- 《The Docker Book》读书笔记
- 什么是读书笔记(Book Mark , Book Note)?
- python cook book第三版 读书笔记1(第一章)
- 'the django book'读书笔记(第1,2章)
- Git Book读书笔记--git分支
- 《Adobe Photoshop CS4 Classroom in a Book》 读书笔记,第1、2课
- [Book]《云计算核心技术剖析》读书笔记
- Git Book读书笔记--Git的基础
- Git Book读书笔记--git常用命令总结
- 37-1-book
- 38-1-book
- book
- book
- book
- book
- book
- java jinfo命令(Java Configuration Info)
- 媒体服务频道访问控制
- poj 2761 Feed the dogs
- HDU 1875 畅通工程再续
- Deepin禁用usb声卡
- pcasm-book读书笔记1
- Hadoop常用组件学习
- QLIKVIEW如何写增量加载脚本
- poj 3481 Double Queue
- Java IO
- netbeans乱码
- 做一台网络收音机——2C51控制VS1003B播放一小段音乐
- OC中的快速枚举器
- 上下文监听者ServletContextListener