汇编摘录
来源:互联网 发布:淘宝店铺复制软件 编辑:程序博客网 时间:2024/05/29 03:26
1. 8086CPU有14个寄存器,
通用寄存器:AX、BX、CX、DX
SI、DI
SP、BP、IP
CS、SS、DS、ES、PSW
8086CPU的所有寄存器都是16位的。
8位寄存器放存放十进制数的范围:[0] 至 [2^8], 即 [0] ~ [255]
2. 看到上面这么多寄存器,头晕了不? = =~
3. 既然头晕,就一个一个来吧。 先学习通用寄存器。
通用寄存器用来存放一般性数据,所以称为通用寄存器。
4. 有一个很有意思的地方。 8086CPU的上一代CPU,寄存器都是8位的,为了保证兼容性,
8086CPU中的AX、BX、CX、DX(通用寄存器) 都只可以分为2个独立的8位寄存器来用。
AX 可分为 AH AL
BX 可分为 BH BL
CX 可分为 CH CL
DX 可分为 DH DL
L 应该是 Lower 低8位(0 ~ 7位)的意思, H 应该是 Higher 高8位(8 ~ 15位)的意思.
5. 8086CPU可以一次性处理2种尺寸的数据: byte(字节)、word(字)
其中 一个字(word)由2个字节组成, 1 word = 2 bytes.
6. 几条汇编指令:
- mov ax, 18 将18送入寄存器AX
- mov ah, 78 将78送入寄存器AH
- add ax, 8 将寄存器AX中的数值加上8
- mov ax, bx 将寄存器BX中的数据送入寄存器AX
- add ax, bx 将AX和BX寄存器中的数值相加,结果存在AX中
7. 几种常见错误:
- mov ax, bl (不能在8位和16位寄存器之间传送数据)
- mov bh, ax (不能在16位和8位寄存器之间传送数据)
- mov al, 20000 (8位寄存器最大可存放值为:255,这个20000 = =~)
- add al, 100H (8位寄存器可存放不了这个高于8位的数据, 嘻嘻)
8. 代码示例:2个通用寄存器 add
假设 ax 和 bx 都是 8226H
- add ax, bx
// 以下进行小学加法运算
8226H
+
8226H
--------------------
1044CH
由于 ax 寄存器要存放 add 的结果值 1044CH, 而1044CH明显是大于4位的16进制数据,
ax 寄存器是16位寄存器,只能存放 16 / 4 = 4 位16进制数据,
所以最高位 1 无法在ax 寄存器中保存,最终 ax 寄存器中存放的数据为: 044CH
9. 代码示例:al 寄存器 add
假设: al 中存放的数据为 C5H
- add al, 93H
// 下面还是进行小学加法运算
C5H
+
93H
----------------
158H
由于al 是8位寄存器,最多只能存放 8 / 4 = 2位16进制数据,
So, 最高位 1 无法在 al 寄存器中存放, 最终 al 寄存器中的数据为 58H
- 汇编摘录
- 摘录嵌入式汇编
- 【摘录】汇编文件后缀 .s 与 .S
- 摘录
- 摘录
- >摘录
- 摘录
- 摘录
- 摘录
- 摘录
- 摘录
- 摘录
- 摘录
- 摘录
- 摘录
- 摘录
- 摘录
- 摘录
- ruby安装笔记
- hibernate使用JUnit进行测试
- 百度php面试题
- 进程间、线程间通信方式小结
- struts1 hibernate el validation 注册登录
- 汇编摘录
- 磁盘IO:缓存IO、直接IO、内存映射
- refefre
- linux scons 实用说明(一)-g选项
- iOS代理
- 食物链 种类并查集
- ViewPager(三)——深入理解 OnPageChangeListener中的onPageScrollStateChanged(int state)
- 【精心推荐】几款极好的 JavaScript 文件上传插件
- 专家系统