检测点2.1
-
mov add 指令
只有mov、add,四条语句完成计算2的四次方
2^4 = 16 = 2*2*2*2
2+2=4
4+4=8
8+8=16
mov ax,2
add ax,ax
add ax,ax
add ax,ax
十进制数62627 转换成 十六进制 F4A3H
- H 后缀表示十六进制数
- 十六进制数
十六进制
1 2 3 4 5 6 7 8 9 A B C D E F
A 表示十进制的10 以此类推
- 在线转换工具 Decimal to Hex
https://codebeautify.org/decimal-hex-converter
- 手工计算,先转换成二进制,再用8421码写成十六进制
62627
1111010010100011
1111 0100 1010 0011
F 4 A 3
怎么来的呢?
以0100举例
0100
8421
只有4对应的位子是1
0*8 + 1*4 + 0*2 + 0*1 = 4
熟练之后直接就是 0+4+0+0=4
更熟练之后一眼就看出只有4
4无论在十进制还是十六进制都是4
所以最终结果里这里写成4
再以1010举例
1010
8421
对应就是8+2=10
10再写成A
汇编指令不区分大小写
mov ax,bx
MOV AX,BX
汇编指令与高级语言
mov ax,8 ax=8
mov ax,bx ax=bx
add ax,bx ax=ax+bx
16位寄存器AX 高位寄存器AH 低位寄存器AL
- AX 是 16位寄存器
- AH AL 是8位寄存
- AH是AX的高8位
- AL是AX的低8位
AX
----------
AH | AL
- 不同的角度看待AX
以二进制数 1010 0011 举例
AX 1010 0011
十六进制 A3
十进制 163
AH 是AX 高8位
AH 1010
十六进制 A
十进制 10
AL 是AX低8位
AL 0011
十六进制 3
十进制 3
三种读法会产生三种不同的结果
- 使用8位寄存器,超过8位可以表示的数据丢失
mov ah,A8H
add ah,90
A-代表十进制的10
10+9=19=16+3
0+8=8
说明需要进一位,但是ah只有8位,所以进位丢失
ah 里面的内容会变成 38H
- 8位寄存器最大存放的十进制数为255(2^8-1)
以下是错误指令
mov al,666
666 超过了255 不能被放到8位寄存器al中
- 不能再8位寄存器和16寄存器之间传递数据
以下是错误指令
mov al,ax
al 是ax的高8位寄存器
ax是16位寄存器
两个之间不能传递数据
寄存器与CPU
- CPU 包括
运算器 +寄存器+控制器+内部总线
- CPU 的重要部件是寄存器
- 寄存器的作用是存储数据