大家好,欢迎来到IT知识分享网。
计算机系统基础(三)之通用寄存器
本文主要结合上文关于标志寄存器的内容,解释关于通用寄存器相关的知识。
文章目录
前言
提示:本章主要介绍8086CPU的通用寄存器
提示:以下是本篇文章正文内容,下面案例可供参考
一、通用寄存器是什么?
通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。
二、8086CPU的通用寄存器
AX,BX,CX,DX 称作为数据寄存器:
- AX (Accumulator):累加寄存器,也称之为累加器;
- BX (Base):基地址寄存器;
- CX (Count):计数器寄存器;
- DX (Data):数据寄存器;
SP 和 BP 称作为指针寄存器:
- SP (Stack Pointer):堆栈指针寄存器;
- BP (Base Pointer):基指针寄存器;
SI 和 DI 称作为变址寄存器:
- SI (Source Index):源变址寄存器;
- DI (Destination Index):目的变址寄存器;
3.八个通用寄存器介绍
3.1 数据寄存器
数据寄存器由AX,BX,CX,DX组成,由于在 8086 之前的 CPU 为 8 位 CPU,所以为了兼容以前的 8 位程序,在 8086 CPU 中,每一个数据寄存器都可以当做两个单独的寄存器来使用,由此,每一个 16 位寄存器就可以当做 2 个独立的 8 位寄存器来使用了 。
- AX 寄存器可以分为两个独立的 8 位的 AH 和 AL 寄存器;
- BX 寄存器可以分为两个独立的 8 位的 BH 和 BL 寄存器;
- CX 寄存器可以分为两个独立的 8 位的 CH 和 CL 寄存器;
- DX 寄存器可以分为两个独立的 8 位的 DH 和 DL 寄存器;
除了上面 4 个数据寄存器以外,其他寄存器均不可以分为两个独立的 8 位寄存器 ;
3.1.1 AX 寄存器:
AX寄存器可以分为 2 个独立的 8 位寄存器 AH 和 AL;如上图,AX的低8位(0位 ~ 7位)构成了AL寄存器,AX的高8位(8位 ~ 15位)构成了AH寄存器.在写汇编程序时,AX 寄存器可以说是使用率最高的寄存器。
- AX的主要用途: 乘、除运算,字的输入输出,中间结果的缓存
- AL 字节的乘、除运算,字节的输入输出,十进制算术运算
- AH 字节的乘、除运算,存放中断的功能号
示例:
3.1.2 BX 寄存器:
上面的示意图表示:可以令 BX = 2,然后通过 DS : [BX] 来访问到内存中段地址为 DS,且偏移量为 2 的内存单元了。
- 例如:
MOV BX,10H MOV AH,11H MOV AH,[BX] ;设置 AX 的值为偏移地址为 BX 中的值时所代表的内存单元
3.1.3 CX 寄存器:
- 一件就是令 CX = CX – 1,即令 CX 计数器自动减去 1;
- 一件就是判断 CX 中的值,如果 CX 中的值为 0 则会跳出循环,而继续执行循环下面的指令,当然如果 CX 中的值不为 0 ,则会继续执行循环中所指定的指令 。
例如:CX 寄存器在循环中的使用(输出 5 个白底蓝字的 A):
MOV AX,0B800H MOV DS,AX ;使用 80x25 彩色字符模式,内存地址 0xB8000 - 0xBFFFFF MOV BX,0 ;从 0xB8000 开始 MOV CX,5H ;循环 5 次 MOV DX,41H ;A 的16 进制为 41H MOV AX,0B ;显示白底蓝字 s: MOV [BX],DX ;显示 ASCII 字符 ADD BX,1 MOV [BX],AX ;设置字符显示属性 ADD BX,1 LOOP s
未完待续
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/111507.html


