微机原理与接口技术1-8习题解答王玉良 下载本文

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX CALL SUBP1 SUBP1

LOP1:

CALL SUBP2 CALL SUBP3 MOV AH,4CH INT 21H

PROC

MOV SI,OFFSET FIRST MOV DI,OFFSET SECOND XOR BL,BL MOV CL,2 MOV AX,[SI]

MOV DX,[SI+2]

SHL AX,1

RCL DX,1 RCL BL,1 DEC CL JNZ LOP1 MOV [DI],AX

MOV [DI+2],DX MOV [DI+4],BL RET

SUBP1 SUBP2

LOP2:

SUBP2 SUBP3

ENDP PROC

MOV SI,OFFSET FIRST MOV DI,OFFSET THIRD XOR BL,BL MOV CL,2 MOV AX,[SI] MOV DX,[SI+2]

SHR DX,1

RCR AX,1 RCR BL,1 DEC CL JNZ LOP2 MOV [DI],BL MOV [DI+1],AX MOV [DI+3],DX RET

ENDP PROC

MOV SI,OFFSET FIRST MOV DI,OFFSET FORTH MOV AX,[SI] MOV DX,[SI+2] NOT AX

NOT DX ADD AX,1 ADC DX,0 MOV [DI],AX MOV [DI+2],DX RET

SUBP3 CODE

9.指令语句AND AX,OPD1 AND OPD2中,OPD1和OPD2是两个已赋值的变量,问两个AND操作分别在什么时间进行?有什么区别?

解 前面的AND是指令,在程序运行时执行,后面的AND是运算符,在汇编的时候由汇编程序计算,表达式计算结果出现在执行程序中。二者的区别在于,前者是指令,程序运行时执行,后者是运算符,汇编时计算。

10.如下指令或程序是否有错,若有错,请指出错在哪里?

ENDP ENDS END START

(1)KI EOU 1024

MOV K1,AX MOV DS,100 MOV [1000],[2000]

(2)

(3)IMP DB ?

MOV IMP,AX

(4)A1 DB ? A2 DB 10

CMP A1,A2

(5)将1000送入X1单元,用如下程序: X1 解

(1)MOV K1,AX错。因为K1为立即数,它不能作为目的操作数。

(2)这两条指令都是错的。第一条立即数不能直接送给段寄存器;第二条两个操作数不能同时为内存操作数。

(3)MOV IMP,AX错。两操作数类型不匹配,IMP是一字节内存单元,而AX寄存

DB ? ┇

MOV BX,X1 MOV [BX],1000