《微机原理与接口技术》周何琴课后习题答案 联系客服

发布时间 : 星期四 文章《微机原理与接口技术》周何琴课后习题答案更新完毕开始阅读4ecf7112250c844769eae009581b6bd97e19bc3d

(2)利用交换指令XCHGMOV SI,2000HMOV DI,3000HMOV CX,100

LP2: MOV AL,[SI]

XCHG [DI],ALINC SIINC DI

LOOP LP2

HLT

(3)利用换码指令XLAT

MOV BX,2000HMOV DI,3000HMOV CX,100

LP3: XOR AL,AL

XLAT

MOV [DI], AL INC BX INC DI LOOP LP3 HLT

(4)利用堆栈实现数据传送MOV SI,2000HMOV DI,3000HMOV CX,50

LP4: PUSH [SI]

POP [DI]INC SIINC SIINC DIINC DI

LOOP LP4

HLT

(5)利用串操作指令REP MOVSB

MOV SI,2000H MOV DI,3000H MOV CX,100 CLD ;DF=0,SI、DI自动+1REP MOVSB HLT

调试程序: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT ORG 2000H

DB 11H,22H,33H,44H,55H.66H,77H,88H,99HDB 100 DUP(?) ORG 3000H DB 100 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKSTART:PUSH DS MOV AX,DATA MOV DS,AX MOV SI,2000H

21

MOV DI,3000H MOV CX,100LP1: MOV AL,[SI] MOV [DI],AL INC SI INC DI

LOOP LP1 POP DS HLTCODE ENDS END START

22. 在DATA开始的4个单元中存放着一个32位数,求出其中的“1”的个数,并存入COUNT单元中。

解: DATA SEGMENT DATA1 DB 0FEH,86H,7CH,35H COUNT DB 00H DATA ENDS STACK SEGMENT

DB 100 DUP(?)

STACK ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKSTART:PUSH DS

MOV AX,DATA

MOV DS,AX MOV AX,STACK MOV SS,AX MOV SI,OFFSET DATA1 MOV BX,[SI] MOV DX,[SI+2] MOV CX,32 XOR AL,AL LP1:RCR DX,1 RCR BX,1 JNC LP2 INC AL LP2:LOOP LP1 MOV COUNT,AL POP DS MOV AH,4CH INT 21H HLT CODE ENDS

END START

1. 下列变量各占多少字节?

A1 DW 23H,5876H 4字节A2 DB 3 DUP(?),0AH,0DH,‘$’ 6字节

A3 DD 5 DUP(1234H,567890H) 4×2×5=40字节

22

A4 DB 4 DUP(3 DUP(1,2,‘ABC’)) 5×3×4=60字节

调试程序:

STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT DA1 DW 23H,5876H DA2 DB 3 DUP(?) ,0AH,0DH,'$' DA3 DD 5 DUP(1234H,567890H) DA4 DB 4 DUP(3 DUP(1,2,'ABC')) DA5 DB 10 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKSTART:PUSH DS

MOV AX,DATA

MOV DS,AX MOV AX,OFFSET DA1 MOV BX,OFFSET DA2 MOV CX,OFFSET DA3 MOV DX,OFFSET DA4 MOV DI,OFFSET DA5 POP DS HLT CODE ENDS END START

5. 对于下面的数据定义,各条MOV指令执行后,有关寄存器的内容是什么?

DA1 DB ?

DA2 DW 10 DUP(?)DA3 DB ‘ABCD’

MOV AX,TYPE DA1

MOV BX,SIZE DA2

MOV CX,LENGTH DA3

解:各条MOV指令执行后,有关寄存器的内容如下:

MOV AX,TYPE DA1 ;(AX)= 1

MOV BX,SIZE DA2 ;(BX)= 20

MOV CX,LENGTH DA3 ;(CX)=1 调试程序

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT DA1 DB ? DA2 DW 10 DUP(?) DA3 DB 'ABCD' DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

23

START: PUSH DS

MOV AX,DATA

MOV DS,AX

MOV AX,TYPE DA1 MOV BX,SIZE DA2 MOV CX,LENGTH DA3 POP DS HLT CODE ENDS END START

6. 下段程序完成后,AH等于什么?

IN

JZ

AL,5FHL1TEST AL,80HMOV

AH,0

JMP STOP

L1:MOV AH,0FFHSTOP:HLT解:

如果地址为5FH的外设输入到AL中的数据的最高位=1,则(AH)= 0,否则,(AH)= 0FFH。

10. 编制两个通用过程,完成两位十六进制数转换成ASCII码,并将ASCII码字符显示。

(1)两位十六进制数转换成ASCII码CON PROC

设两位十六进制数存放在DL中,输出的ASCII码存放在BX中。

PUSH AX PUSH CX MOV CL, 4

MOV AL, DL

AND AL, 0FH CMP AL, 0AH JNC LP1 JMP LP2 ADD AL, 30HLP1: ADD AL, 37HLP2: MOV BL, AL

MOV AL, DL SHR AL, CL

AND AL, 0FH CMP AL, 0AH

24