微机原理与接口技术周何琴课后习题答案 - 图文 下载本文

CODE ENDS END START

13. 将键盘上输入的一位为十六进制数转换成十进制数,在屏幕上显示。 DATA SEGMENT DATA1 DB 10 DUP(?) DATA2 DB 10 DUP(?) DATA ENDS

STACK SEGMENTSTACK

DB 100 DUP(?)

STACK ENDS CODE SEGMENT

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

MOV AX,DATA

MOV DS,AX KEY: MOV AH,1 INT 21H ZH: CMP AL,3AH JAE ZH1

SUB AL,30H JMP ZH2

ZH1: SUB AL,37H ADD AL,0 DAA

ZH2: MOV BL,AL AND AL,0F0H MOV CL,4 SHR AL,CL ADD AL,30H MOV BH,AL MOVAL,BL AND AL,0FH ADD AL,30H

MOVBL,AL DISP: MOV DL,BH

MOV AH,2 INT 21H MOV DL,BL MOV AH,2 INT 21H POP DS

MOV AH,4CH INT 21H HLT

CODE ENDS

END START 调试程序:

STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT

BUF1 DB 'Please input one hexadecimal(0-9,A-F):',0DH,0AH,'$' BUF2 DB 20H,20H,'Decimal(0-15):',0DH,0AH,'$' BUF3 DB 10 DUP(?) DATA ENDS CODE SEGMENT

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

MOV AX,DATA MOV DS,AX

MOV DX,OFFSET BUF1 MOV AH,9 INT 21H

KEY: MOV AH,1 INT 21H PUSH AX

MOV DX,OFFSET BUF2 MOV AH,9 INT 21H POP AX

ZH: CMP AL,3AH JAE ZH1 SUB AL,30H JMP ZH2 ZH1: SUB AL,37H ADD AL,0 DAA

ZH2: MOV BL,AL AND AL,0F0H MOV CL,4 SHR AL,CL ADD AL,30H MOV BH,AL MOV AL,BL AND AL,0FH ADD AL,30H

MOV BL,AL DISP: MOV DL,BH MOV AH,2 INT 21H MOV DL,BL MOV AH,2 INT 21H POP DS MOV AH,4CH INT 21H HLT CODE ENDS

END START

22. 编程序统计学生的数学成绩,分别归类90~99分,80~89分,70~79分,60~69分及60分以下,并将各段的人数送入内存单元中。 解:

STACK SEGMENT

DB 100 DUP(?)

STACK ENDS DATA SEGMENT DATA1 DB 200 DUP(?) DATA2 DB 100 DUP(?) DATA3 DB 10 DUP(?) DATA ENDS CODE SEGMENT

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

MOV AX,DATA MOV DS,AX XOR CX,CX

KEY:MOV SI,OFFSET DATA1 KEY1:MOV AH,1 INT 21H CMP AL,‘$’ JZ ZH INC CX

MOV [SI],AL

INC SI

JMP KEY1

ZH: MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 SHR CX,1 PUSH CX

ZH1:MOV AL,[SI]

AND AL,0FH SHL AL,1 SHL AL,1 SHL AL,1 SHL AL,1 MOV BL,AL INC SI

MOV AL,[SI] AND AL,0FH OR AL,BL MOV [DI],AL INC SI INC DI

LOOP ZH1

TJ: POP CX

MOV DI,OFFSET DATA2 TJ0: MOV AL,[DI]

CMP AL,90H

JNB TJ1

CMP AL,80H

JNB TJ2

CMP AL,70H

JNB TJ3

CMP AL,60H

JNB TJ4

INC 4[DATA3] JMP TJ5

TJ1: INC [DATA3] JMP TJ5

TJ2: INC 1[DATA3] JMP TJ5

TJ3: INC 2[DATA3] JMP TJ5

TJ4: INC 3[DATA3] TJ5: INC DI LOOP TJ0 POP DS

MOV AH,4CH INT 21H HLT

CODE ENDS

END START 调试程序:

STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT DATA1 DB 80 DUP(?) DATA2 DB 80 DUP(?) DATA3 DB 10 DUP(?) DATA ENDS CODE SEGMENT

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

MOV AX,DATA

MOV DS,AX XOR CX,CX

KEY:MOV SI,OFFSET DATA1 KEY1:MOV AH,1 INT 21H CMP AL,'$' JZ ZH INC CX

MOV [SI],AL INC SI

JMP KEY1

ZH: MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 SHR CX,1 PUSH CX

ZH1:MOV AL,[SI]

AND AL,0FH SHL AL,1 SHL AL,1 SHL AL,1 SHL AL,1 MOV BL,AL INC SI

MOV AL,[SI] AND AL,0FH OR AL,BL MOV [DI],AL INC SI INC DI

LOOP ZH1

TJ: POP CX

MOV DI,OFFSET DATA2 TJ0: MOV AL,[DI] CMP AL,90H JNB TJ1 CMP AL,80H JNB TJ2 CMP AL,70H JNB TJ3 CMP AL,60H JNB TJ4

INC 4[DATA3] JMP TJ5 TJ1: INC [DATA3] JMP TJ5 TJ2: INC 1[DATA3] JMP TJ5 TJ3: INC 2[DATA3] JMP TJ5 TJ4:INC 3[DATA3] TJ5: INC DI

LOOP TJ0 POP DS

MOV AH,4CH INT21H