微机原理陈继红版部分答案

loading 分享 2026-11-6 下载文档

3.9 设AX=0A69H,VALUE 字变量中存放的内容为1927H,写出下列各条指令执行 后寄存器和CF、ZF、OF、SF、PF 的值。 AX CF ZF OF SF PF

(1)XOR AX,VALUE ; 134EH 0 0 0 0 1 (2)AND AX,VALUE ; 0821H 0 0 0 0 1 (3)SUB AX,VALUE ; F142H 1 0 0 1 1 (4)CMP AX,VALUE ; 0A69H 1 0 0 1 1 (5)NOT AX ; F596H X X X X X

(6)TEST AX,VALUE ; 0A69H 0 0 0 0 1

3.10 设AX 和BX 中是符号数,CX 和DX 是无符号数,请分别为下列各项确定CMP 和条件转移指令。 CX 值超过DX 转移。 AX 未超过BX 转移。 DX 为0 转移。

CX 值等于小于DX 转移。 答案:

(1) CMP CX,DX JA NEXT

(2) CMP AX,BX JLE NEXT

(3) CMP DX,0 JZ NEXT

(4) CMP CX,DX JBE NEXT

3.11 阅读分析下列指令序列: ADD AX,BX JNO L1 JNC L2

SUB AX,BX JNC L3 JNO L4 JMP L5

若AX 和BX 的初值分别为以下5 种情况,则执行该指令序列后,程序将分别转向何处 (L1~L5 中的一个)。 AX=13C6H, BX=80DCH AX=0B568H,BX=54B7H AX=42C8H, BX=608DH AX=0D023H,BX=9FD0H AX=9FD0H, BX=0D023H

答案:(1)转L1:不溢出,转移到L1 处; (2)转L1:不溢出,转移到L1 处;

(3)转L2:溢出,不转移到L1 处,进位CF=0,转移到L2 处;

(4)转L3:溢出,不转移到L1 处,进位CF=1,不转移到L2 处,减法借位CF=0,转移 到L3 处;

33

(5)转L5:溢出,不转移到L1 处,进位CF=1,不转移到L2 处,减法借位CF=1,不转 移到L3 处,不溢出OF=0,转移到L4 处;

3.12 用普通运算指令执行BCD 码运算时,为什么要进行十进制调整?具体地讲,在进行 BCD 码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?

解:因为8086 指令把操作数作为二进制数进行二进制运算,要得到正确的BCD 结果,需 要进行调整。在加、减、乘法指令之后加上BCD 调整指令,而在除法指令之前先用BCD 调 整指令再用除法指令。

3.13 在编写乘除法程序时,为什么常用移位指令来代替乘除法指令?编写一段程序,实 现将BX 中的数除以10,结果仍然放在BX 中。

解:用移位指令时,左移l 位相当于将操作数乘2,右移1 位相当于将操作数除2。用

移位指令实现一些简单的乘除法程序,比用乘法指令和除法指令进行乘、除运算要快得多。 用除法指令实现: MOV CL 0AH MOV AX,BX IDIV CL

MOV BX,AX

3.14 串操作指令使用时特别要注意和SI,DI 这两个寄存器及方向标志DF 密切相关。请 具体就指令MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、 STOSB/STOSW 列表说明和SI、DI 及DF 的关系。 解答: SI DI DF

MOVSB/MOVSW 指出源地 址

指出目的地 址

不带 REP 重复前缀时,DF=0,每传送一次,SI、 DI 加1 或加2,DF=1,SI、DI 则减1 或减2 CMPSB/CMPSW 存放源字 符串首地 址

存放目的字 符串首地址

DF=0,每次比较后,SI、DI 加1 或加2,CX 减 1,DF=1,SI、DI 减1 或减2,CX 减1 SCASB/SCASW 无 指出字符串 首址偏移量 无

LODSB/LODSW 作为地址 指针

存放处理结 果

DF=1 时,地址作增量修改,DF=0 时,地址作减 量修改

STOSB/STOSW 无 存放目的地

33

址 无

3.15 用串操作指令设计实现以下功能的程序段:首先将100H 个数从2170H 处搬到 1000H 处,然后,从中检索相等于VAL 中字符的单元,并将此单元值换成空格符。 解答:

START:MOV AX, DS MOV ES, AX MOV SI, 2170H MOV DI, 1000H MOV CX, 100H CLD

REP MOVSB

ANOTHER:MOV DI, 1000H MOV AL, VAL MOV CX, 100H CLD

AGE: SCASB JZ FIN DEC CX JNZ AGE JMP OVER

FIN: MOV BYTE PTR[DI-1],20H CMP CX,0 JNZ AGE OVER: RET

3.16 求双字长数DX∶AX 的相反数。 答:

NEG DX NEG AX SBB DX,0

3.17 试对数据段偏移地址为101H 单元中的单字节数求补后存入102H,最高位不变, 低7 位取反存入103H,高4 位置1,低4 位不变,存入104H。 答:

MOV AX,[0101H] MOV BX,AX MOV CX,AX NOT AX

MOV [0102H],AX XOR BX,7FH MOV [0103H],BX AND CX,0F0H MOV [0104H]

3.19 试编写一个程序,比较两个同长字符串STRING1 和STRING2 所含字符是否相同, 若相同MATCH 单元赋值1,若不相同MATCH 单元赋值0。 答案:

33

程序段为: ;数据定义

STRING1 DB ?ABCDEFGHIJK ;串1,作为源串 STRING2 DB ?ABCDFGKJ ;串2,作为目标串 MATCH DB ? ;定义MATCH 单元 ;功能代码

MOV AX,SEG STRING1

MOV DS,AX ;源串段地址送DS MOV AX,SEG STRING2

MOV ES,AX ;目标串段地址送ES LEA SI, STRING1 ;源串偏移地址送SI LEA DI, STRING2 ;目标串偏移地址送DI

MOV CX, STRING1- STRING2 ;重复次数送CX CLD ;地址增

REPE CMPSB ;相等继续比较,不相等退出 JZ EQUAL ;退出时,若ZF=1,表示两串相等 MOV MATCH,0 ;不相同,MATCH 单元赋值0 JMP OVER

EQUAL:MOV MATCH,1 ;相同MATCH 单元赋值1 OVER:HLT

3.20 编写代码,计算a+10b+100c+20d,其中a、b、c、d 均为单字节无符号数,结果为16 位,存入SUM 开始的两单元中。 data segment ma db 12 mb db 21 mc db 86 md db 150 SUM dw 0 data ends code segment

assume ds:data,cs:code start:mov ax,data mov ds,ax mov dh,0 mov dl,ma mov ah,0 mov al,10 mul mb add dx,ax mov ah,0 mov al,100 mul mc add dx,ax mov ah,0

33


微机原理陈继红版部分答案.doc 将本文的Word文档下载到电脑
搜索更多关于: 微机原理陈继红版部分答案 的文档
相关推荐
相关阅读