寄存器是用于临时存储数据的,位于cpu内部,每一个寄存器都是cpu一个元件,一个CPU有很多个寄存器, 作用也不相同
通用寄存器
在8086中, 有 AX, BX, CX, DX四个通用寄存器, 内部结构是16位, 通常按名称就可以知道是多少位, 比如
- AX –> 一般以X结尾是16位
- EAX –> 以E开头, 以X结尾是32位
在通用寄存器中, 可以分为低8位和高8位, 如 AX –> 高8位AH + 低8位AL, 这也是为了照顾兼容8位操作系统, 8086以前的都是8位CPU
在计算机中, 字是一个单位, 通常表示16位( 与系统有关 ), 此外字节往往是8位
例子: AX存储数据
十进制18, 存储在AX中它是怎么存储的?
先转换为2进制, 得到 10010, 高位补0, 那么最终是 00…共11个0…10010
问题: 一个16位寄存器存储最大数是多少?
答案: 2的16次方-1, 因为最小的是0.
简单的汇编指令
下面讲2个汇编操作寄存器的指令 ( 汇编不区分大小写 )
指令 | 解释 | 高级语言 |
---|---|---|
mov ax,78 | 将78送入AX | AX=8 |
mov ah,78 | 将78送入AH | AH=8 |
add ax,8 | 将寄存器ax的值加等于8 | AX=AX+8 |
mov ax,bx | 将BX中的值送入AX | AX=BX |
add ax,bx | 将AX,BX中的值加和后送到AX | AX=AX+BX |
在实际汇编程序中, 数据通常使用16进制,而debug中无需h也默认是16进制
问题: 已知AX和BX均为8226H, 则add ax,bx后ax的值是多少?
答: 044C, 正常相加后的值是 1044C, 但它超过16位所以第一位的1被舍去( 其实没丢弃, 放进制位中了)