首页 > 编程知识 正文

通用寄存器是指,通用数据寄存器

时间:2023-05-04 00:56:15 阅读:120471 作者:399

因为学习中使用了qkdfk的《汇编语言(第3版)》,所以只能提到8086CPO的寄存器。 关于其他,原理是相同的。

在8086寄存器的情况下,有14个寄存器,主要是AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

一、通用寄存器

8086的通用寄存器为AX、BX、CX、dx个16位,可存储2字节,分为高位8位和低位8位。 这里主要考虑兼容性问题,8086一次可以处理一个字节或一个字的数据。 例如:

这里需要注意的是,关于AH和BH是完全无关的两个东西。 例如:

mov al,93硬盘al,C5H

计算得到的结果应该是158H,但这超过了AL能存储的最大值。 但是,1没有进入AH,“失去了”。 自己还没有找到原因,还在学习中。 找到答案后我会回去修改的。 但这足以表明AL和AH是两个不同的东西。

二、几条汇编指令

(1)数据传送指令mov

格式: mov oprd1,oprd2

功能:本指令将一个源操作数发送到目标寄存器,即oprd1—oprd2。

说明:

1oprd1是目标操作数,有寄存器、存储器、累加器。 oprd2是源操作数,其可以是寄存器、存储器、累加器或即时整数。

2mov命令有四个操作:

寄存器和寄存器之间的数据传输指令。 例如,mov ax、bx; 立即计数到通用寄存器的数据传输指令。 需要注意的是,例如mov ax、5600H,这里的即时数只能用作源操作数; 寄存器和存储器之间的数据传输指令。 例如,mov ax、buffer;

我马上数到内存的数据传输。 例如,mov alfa,24。

3本指令不影响状态标志位。 执行4mov指令时的数据传输方向

即时数只能用作源操作数,不允许目标操作数,即时数也不发送到段寄存器。

通用寄存器可以与段寄存器、存储器相互传送数据,也可以在寄存器之间相互传送。 但是,CS段不能是所需的操作数。

内存和内存之间不能直接传输数据。 存储单元之间的数据传输可以通过通用寄存器进行。(2)加法指令add格式: add oprd1、oprd2功能:加2个数。 说明:1opr1可以是任意通用寄存器或存储器操作数,可以是任意通用寄存器,也可以是任意存储器操作数。 这给程序的编制带来了很大的便利。

opr2为即时数,可以是任意的通用寄存器操作数。 即时计数只能用于源操作数。

2允许opr 1和opr2都是寄存器,允许一个是寄存器而另一个是存储器,但不允许两个都是存储器操作数。 理由是,指令代码的寻址方式规定两个操作数(即时数除外)中至少有一个是寄存器操作数。

3加法指令运算的结果对CF、SF、OF、PF、ZF、AF有影响。 以上标记也称为结果标记。 加法指令适用于无符号数或有符号数的加法。 操作数可以是8位,也可以是16位。

转载于:https://www.cn blogs.com/pipi net/p/6257373.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。