当前位置: 汇编教程 > 02-寄存器 > 阅读正文

汇编 通用寄存器

2021.7.11.   687 次   652字

寄存器是用于临时存储数据的,位于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送入AXAX=8
mov ah,78将78送入AHAH=8
add ax,8将寄存器ax的值加等于8AX=AX+8
mov ax,bx将BX中的值送入AXAX=BX
add ax,bx将AX,BX中的值加和后送到AXAX=AX+BX

在实际汇编程序中, 数据通常使用16进制,而debug中无需h也默认是16进制

问题: 已知AX和BX均为8226H, 则add ax,bx后ax的值是多少?

答: 044C, 正常相加后的值是 1044C, 但它超过16位所以第一位的1被舍去( 其实没丢弃, 放进制位中了)

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群