32位微机原理考试重点文库.docx

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1,原码:0表示“+”,I表示“一”,数值位与真值数值位相同。

反码:正数的反码与原码表示相同。负数反码符号位为1,数值位为原码数值各位取反。补码:正数的补码表示与原码相同。负数补码的符号位为1,数值位等于反码加1。[XJ补二[X」反+1负数直接求补:从最低位起,到出现第一个1以前原码中的数字不变,以后逐位取反, 但符号位不变。

2,各种编码方法的表数范围:

n+1位二进制编码x表示的整数范围:

原码、反码:・2n

补码:・2nWx<2n

8位原码、反码的表数范围是-127〜+127,补码的表数范围是・128~+127; 16位原码、反码的表数范围是-32767〜+32767,补码的表数范围是-32768〜+32767

3,原码、反码、补码表示小结:

正数的原码、反码、补码表示均相同,

符号位为0,数值位同数的真值。

零的原码和反码均有2个编码,补码只有1个编码。

负数的原码、反码、补码表示均不同,

符号位为1,数值位:原码为数的绝对值

反码为每一位均取反码

补码为反码再在最低位+1

由[X]补求[-X]补:逐位取反(包括符号位),再在最低位+1

4,进位标志CF (Carry Flag):运算结果的最高位产生进位或借位时,或循坏指令也会影响该位。

奇偶标志PF (Parity Flag):运算结果的低8位小所含1的个数为偶数个,则该位置1。

辅助进位标,忐AF (Auxiliary Carry Flag):加减法运算时,如果第3位与第4位Z间有进位或借位产生,则该位置1。一般川于BCD运算中是否进行|•进制调整的判断依据。

零标志ZF (Zero Flag):运算结果为零,则该位置1。

符号标志SF (Sign Flag):与运算结果符号位(即最高位)相同。

溢出标志OF (Overflow Flag):当运算结果超出结果寄存器的表达范围时,该位置1。

跟踪标志TF (Trap Flag):控制CPU按调试的单步方式执行指令。

中断允许标志IF (Interrupt Enable Flag):控制CPU对•外部可屏蔽中断(INTR)的响应。

当IF=1时,允许CPU响应外部可屏蔽屮断;当IF=0时,禁止响应INTR,但不禁止CPU 对非屏蔽中断(NMI)的响应。

方向标志DF (Direction Flag):用于控制串操作指令中的地址变化方向。

5,立即寻址方式:8086 CFU指令系统中,有一部分指令所用的8位或16位操作数就在指令中提供,这种方式叫立即寻址方式。

■例如:

MOV AL, 80H;将十六进制数80H送入AL

MOV AX, 1090H;将1090H 送AX, AH 中为10H, AL 中为90H

寄存器寻址方式:如果操作数在CPU的内部寄存器中,那么寄存器名可在指令中指出。这种寻址方式就叫寄存器寻址方式。

■例如:

INC CX ;将CX的内容加1

MOV AX, BX ;将BX内容送AX, BX内容不变

ROL AH, 1 ;将AH中的内容不带进位循环左移一位

采用寄存器寻址方式的指令在执行时,操作就在CPU内部进行,不需要使用总线周期, 执行速度快。

直接寻址方式:使用直接寻址方式,数据在存储器中,存储单元有效地址EA由指令直接指出,所以直接寻址是对存储器进行访问时最简单的方式

例如:MOV AX, | 2000H ]

寄存器间接寻址方式:采用寄存器间接寻址方式时,操作数一定在存储器中,存储单元的有效地址由寄存器指出。这些寄存器可以是BX, BP, SI和DI,即有效地址等于其中某一个寄存器的值

寄存器相对寻址方式(直接变址寻址):操作数有效地址EA为基址或变址寄存器内容与指令中指定位移量之和,操作数在存储器中。可用寄存器及其对应的默认段情况与寄存器间接寻址方式相同。

基址变址寻址方式:用这种寻址方式时,操作数的有效地址等于基址寄存器的内容加上一个变址寄存器的内容,16位寻址时,基址寄存器可用BX和BP,变址寄存器可用SI 和DI;32位寻址时,基址寄存器可用任何32位通用寄存器,变址寄存器可用除ESP 以外的32位通用寄存器。

用MOV指令实现两内存字节单元内容的交换

1、M OV BL, [2035HJ;

MOV CL, |2045H|;

MOV |2045H|, BL;

MOV |2035H], CL;

2、M OV AL, [2035H];

XCHGAL, |2045H];

MOV [2035H],AL;

测试某状态寄存器(端口号27H)的第2位是否为1

IN AL, 27H

TEST AL, 00000100B

JNZ ERROR ;若第2位为1,转ERROR处理

设数据段:ADDR1 DF 1234567890ABH

贝lj LES EBX,ADDR1

指令执行后(ES)=1234H, (EBX)=567890ABH

【例题】实现两个无符号双字加法运算。设目的操作数存放在DX和AX寄存器中,其中DX存放高位字。源操作数存放在BX、CX中,其中BX存放高位字。如指令执行前(DX) =0002H, (AX) =0F365H, (BX) =0005H, (CX) =0E024H

指令序列为ADD AX, CX

ADC DX, BX

则第一条指令执行后,(AX)=0D389H, SF=1, ZF=O, CF=1, OF=0

第二条指令执行后,(DX)=0008H, SF=O, ZF=O, CF=O, OF=0 【例题】比较AL的内容数值大小。

CMP AL, 100; (AL) -100

JB BELOW ;(AL) <100,转到BELOW 处执行

SUB AL, 100; (AL) >=100, (AL) -100—AL

INC AH ;(AH) +1—AH

BELOW:・・・

【例题】设x、y、z均为双字长数,它们分别存放在地址为X, X+2; Y, Y+2;乙Z+2 的存储单元中,存放时高位字在高地址中,低位字在低地址中,编写指令序列实现w J x+y+24 - z,并用w和w+2单元存放运算结果。

MOV AX, X

MOV DX, X+2

ADD AX, Y

ADC DX, Y+2

ADD AX, 24

ADC DX, 0

SUB AX, Z

SBB DX, Z+2

MOV w, AX

MOV W+2, DX

【例题】无符号数0A3H与11H相乘。

MOV AL, 0A3H ;(AL) =0A3H

MOV BL, 11H ;(BL) =11H

MUL BL ;(AX) =0AD3H

【例题】

若(AL) = 0B4H, (BL) =11H,求执行指令IMUL BL和MUL BL后的乘

积值。

(AL) =0B4H为无符号数的180D,带符号数的・76D

(BL) =11H为无符号数的17D,带符号数的17D

则执行IMULBL 的结果为(AX) =0FAF4H =-1292D, CF=OF=1 执行MULBL 的结果为

(AX) =0BF4H = 3060D, CF=OF=1

【例题】写出实现无符号数0400H/0B4H运算的程序段。

MOV AX, 0400H ; (AX) =0400H

MOV BL, 0B4H ; (BL) =0B4H

DIV BL ;商(AL) =05H,余数(AH) =7CH

【例题】写出实现有符号数0400H /0B4H运算的程序段。

MOV AX, 0400H ; (AX) =0400H

MOV BL, 0B4H ; (BL) =0B4H

IDIV BL ; (AL) =0F3H, (AH) =24H

算术运算综合举例【例3・36】

相关文档
最新文档