
微机原理与接口技术[第三版]——第四章课后习题答案
微机原理与接口技术[第三版]——第四章课后习题答案
10.
(1)MOV CX,TYPE DATA1
CX为变量类型包含字节数,因为DATA1为DB型,有CX=1
(2)MOV CX,TYPE DATA3
同理,DATA2为DW型,有CX=2
(3)MOV AL,LENGTH DATA2
返回DATA2的长度(DUP),AL = 16 = 10H
(4)MOV AX,LENGTH DATA3
AL = 05H
(5)MOV AX,SIZE DATA3
SIZE = 0AH
11.
ORG 0010H
NUM1 DW 9637H
NUM2 DB 'ABCD'
NUM3 DW 1854H
LEA SI,NUM1 SI为NUM1的有效地址,SI=0010H
MOV DI,OFFSET NUM2 DI为NUM的偏移地址,DI=0012H
MOV AX,NUM3 AX为[NUM3]所指单元内容送入,AX=1854H
13.
(1)XX DB 11,31H,?,‘a’
(2)YY DW 0ABH,2 DUP (3,2 DUP(0)),0CDH
(3)ZZ DD 3579H
14.整体程序框图如下
为求最小数程序,并最终存入RES
15.程序功能:将YY、XX的压缩BCD码装入ZZ中。
16.
DATA SEGMENT
X DD 453921F0H
Y DD 123A6825H
Z DW 0A86H
A DW ?
B DW ?
DATA ENDS
CODE SEGMENT
...
MOV AX,WORD PTR X ;AX为X低位
MOV DX,WORD PTR X+2 ;DX为X高位
SUB AX,WORD PTR Y
SBB DX,WORD PTR Y+2 ;整体为X-Y
SBB AX,29D ;X-Y-29D
SBB DX,0 ;减去可能借位
DIV Z ;除以Z
MOV A,AX ;商放A中
MOV B,BX ;余数放B中
...
CODE ENDS
整体实现的功能为:完成(X-Y-29D)/Z的操作后将商放入A中,余数放入B中。
19.求出所给数中的最大最小值。
DATA SEGMENT
DATA_LIST DW -1, 0, 2, 5, 4, 5 DUP(0) ;define 10L array
ORG 0030H
STRMAX DB 'MAX=','$'
STRMIN DB 'MIN=','$'
KONG DB 0AH,'$'
MAX DW ? ;define MAX
MIN DW ? ;define MIN
DATA ENDS
STACKS SEGMENT
DB 128 DUP (?)
STACKS ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACKS
START:
MOV AX,DATA
MOV DS,AX
MOV CX,05H ;find MIN
LEA SI,DATA_LIST
MOV AX,[SI]
LP1:
CMP AX,[SI+2]
JNG NEXT1
MOV AX,[SI+2]
NEXT1:
INC SI
INC SI
LOOP LP1
MOV MIN,AX
PUSH AX
CALL STR2 ;print str
POP AX
CALL PRINT ;print min
CALL STR3
MOV CX,05H ;find MAX
LEA SI,DATA_LIST
MOV AX,[SI]
LP2:
CMP AX,[SI+2]
JGE NEXT2
MOV AX,[SI+2]
NEXT2:
INC SI
INC SI
LOOP LP2
MOV MAX,AX
CALL STR1 ;print str
MOV AX,MAX
CALL PRINT ;print max
MOV AH,4CH
INT 21H
PRINT PROC NEAR ;proc to print number
MOV BX,10
TEST AX,8000H
JZ POSETIVE
PUSH AX
MOV AX,0E2DH
INT 10H
POP AX
NEG AX
POSETIVE:
MOV DX,0
XOR CX,CX
Q0:
XOR DX,DX
DIV BX
XOR DX,0E30H
PUSH DX
INC CX
CMP AX,0
JNZ Q0
Q1:
POP AX
INT 10H
LOOP Q1
RET
PRINT ENDP
STR1 PROC NEAR ;proc to print str
MOV AX, SEG STRMAX
MOV DS, AX
MOV DX, OFFSET STRMAX
MOV AH, 09H
INT 21H
RET
STR1 ENDP
STR2 PROC NEAR ;proc to print str
MOV AX, SEG STRMIN
MOV DS, AX
MOV DX, OFFSET STRMIN
MOV AH, 09H
INT 21H
RET
STR2 ENDP
STR3 PROC NEAR ;proc to print str
MOV AX, SEG KONG
MOV DS, AX
MOV DX, OFFSET KONG
MOV AH, 09H
INT 21H
RET
STR3 ENDP
CODE ENDS
END START
结果如图:
21.两个八字节数相加并观察。
DATAS SEGMENT
DATAS ENDS
STACKS SEGMENT
DB 128 DUP (?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,2000H
MOV DS,AX
MOV SI,50H ;20050
MOV DI,58H ;20058
MOV BX,60H ;20060
MOV CX,4 ;2BYTE/TIME,8/2=4
CLC
LP1:
MOV AX,[SI]
ADC AX,[DI]
MOV [BX],AX
PUSHF
ADD SI,2
ADD DI,2
ADD BX,2
POPF
LOOP LP1
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果如图:
22.通过屏幕显示功能(BIOS)输出‘HELLO WORLD’
DATAS SEGMENT
STR DB 'HELLO WORLD!'
DATAS ENDS
STACKS SEGMENT
DB 128 DUP (?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,OFFSET STR
MOV CX,1
MOV AH,0FH ;PAGE NUM TO BH
INT 10H
MOV AH,0 ;define screen
MOV AL,2
INT 10H
MOV DX,0
LP1:MOV AH,2
INT 10H
MOV AH,0AH
MOV AL,[SI]
INT 10H
INC DL
INC SI
CMP DL,12
JNE LP1
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果如图:
24.完成十进制到十六进制的转换。
DATAS SEGMENT
STR1 DB 'Input a decimal num:','$'
STR2 DB 'Hex Num is:','$'
STR3 DB 'Wrong number!!',13,10,'$'
FLAG DB ?
DATAS ENDS
STACKS SEGMENT
DB 128 DUP (?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
MAIN PROC FAR
MOV AX,DATAS
MOV DS,AX
MOV CX,10
MOV FLAG,0
START:
LEA DX,STR1
MOV AH,09H ;OUTPUT GUIDE WORD
INT 21H
CALL INPUT
CMP FLAG,1
JE EXIT1
CALL HCHH ;OUTPUT THE ANSWER
LEA DX,STR2
MOV AH,09
INT 21h
CALL HEX
MOV AH,2
MOV DL,'H' ;H
INT 21H
MOV AH,2
CALL HCHH
LOOP START
EXIT1:
RET
MAIN ENDP
INPUT PROC near
MOV BX,0
PUSH CX
CHAR:
MOV AH,1 ;INPUT NUMBER
INT 21H
CMP AL,13 ;JUDGEMENT
JE EXIT2
SUB AL,30h ;NOT A NUMBER
JL ERR
CMP AL,9D
JG ERR
CBW
XCHG AX,BX
MOV CX,10D
MUL CX
XCHG AX,BX
ADD BX,AX
JMP CHAR
ERR:
CALL HCHH
LEA DX,STR3
MOV AH,09
INT 21h
MOV FLAG,1
EXIT2:
POP CX
RET
INPUT ENDP
HEX PROC near
PUSH CX
MOV CH,4
TRANS:
MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30h
CMP AL,3ah ;>9?
JL PRINT
ADD AL,7h ;TRANS TO ZIMU
PRINT:
MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNZ TRANS
POP CX
RET
HEX ENDP
HCHH PROC near
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
RET
HCHH ENDP
CODES ENDS
END MAIN
结果如图:
更多推荐
所有评论(0)