微型计算机原理习题参考答案
ADC MOV
DX,AL [DI],DX
JMP EXIT
ZERO: MOV AL,0 MOV MOV MOV ; EXIT:
MOV AX,4C00H INT 21H A,AL B,AL C,AL
CODE ENDS END START
11.(16)试编程序,统计由 TABLE 开始的 128 个单元中所存放的字符“A”的个数,并将结果存放在 DX 中。解答: DATA SEGMENT
TABLE DB X1,X2,...X128 DATA ENDS ;
STACK SEGMENT STACK ENDS ;
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA
MOV DS,AX
LEA SI,TABLE
MOV DX,0 MOV CX,128
AGAIN: MOV AL,[SI]
CMP AL,'A' JNZ NEXT INC DX
NEXT: INC SI
LOOP AGAIN
MOV AX,4C00H INT 21H
CODE ENDS END START
- 21 -
微型计算机原理习题参考答案
12.试编制一个汇编语言程序,求出首地址为 DATA 的 1000 个字数组中的最小偶数,并把它存放于 MIN 单元中。解答: DATA SEGMENT
ARRAY DW X1,X2,...X1000 ARRAY_EVEN DW 1000 DUP(?) MIN DW ? MAX DW ? DATA ENDS ;
STACK SEGMENT STACK ENDS ;
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA
MOV DS,AX
;将数组中的偶数放入 ARRAY_EVEN 中 LEA SI,ARRAY LEA DI,ARRAY_EVEN MOV CX,1000 AGAIN: MOV AX,[SI]
TEST AX,01h
JNZ MOV INC INC
NEXT [DI],AX DI DI
NEXT: INC SI INC SI
LOOP AGAIN
;找出 ARRAY_EVEN 中的最大数 LEA SI,ARRAY_EVEN MOV CX,999 MOV MOV
AX,[SI] BX,AX
INC SI INC SI
NEXT: CMP AX,[SI] JAE LL MOV AX,[SI] LL: INC SI INC SI LOOP NEXT
- 22 -
微型计算机原理习题参考答案
MOV MAX,AX
;找出 ARRAY_EVEN 中的最小数(第 13 题增加的部分) LEA SI,ARRAY_EVEN MOV MOV MOV INC
CX,999 AX,[SI] BX,AX SI
INC SI
NEXT: CMP AX,[SI] JBE MOV INC
SS
AX,[SI] SI
SS: INC SI LOOP NEXT MOV MIN,AX ;返回 DOS
MOV AX,4C00H INT 21H
CODE ENDS END START
13.在上题中,如果要求同时找出最大和最小的偶数,并把它们分别存放于 MAX 和 MIN 单元中,试完成程序。解答:略(见第 12 题)。 14.(28)在 DATA 字数组中存放有 100H 个 16 位补码数,试编写一程序求它们的平均值,放在 AX 中,并求出数组中有多少个数小于平均值,将结果存于 BX 中。 解答:
DATA SEGMENT
DAT DW X1,X2,...X256 DATA ENDS ;
STACK SEGMENT STACK ENDS ;
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA
MOV DS,AX
;将数组中的 100H 个数求和后求平均值 LEA SI,DAT MOV CX,100H CLC
- 23 -
微型计算机原理习题参考答案
MOV MOV
BX,0000 DX,0000
AGAIN: MOV AX,[SI] ADD BX,AX JNC ADC
NEXT DX,1
NEXT: INC SI INC SI
LOOP AGAIN MOV MOV DIV
CX,100H AX,BX CX
;找出 DAT 中的小于平均值的个数 LEA SI,DAT MOV CX,100H MOV DX,0000H AGAIN0:MOV BX,[SI] CMP JGE INC
BX,AX;与平均值 AX 比较,大于等于则转 NEXT0,否则将读数器 DX 加 1 NEXT0 DX
NEXT0: INC SI INC SI
LOOP AGAIN0 MOV BX,DX ;返回 DOS
MOV AX,4C00H INT 21H CODE ENDS END START
15.(17)编写一个子程序,对 AL 中的数据进行偶校验,并将经过校验的结果放回 AL 中。 解答:
DATA SEGMENT COUNT EQU 7 DATA ENDS ;
STACK SEGMENT STACK ENDS ;
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA
- 24 -
微型计算机原理习题参考答案
START: MOV AX,DATA
MOV DS,AX
PUSH AX
MOV DX,0
MOV CX,COUNT
AGAIN: RCR AL,1
JNC L INC DX
LOOP AGAIN POP AX TEST DX,01 JZ EXIT OR AL,80
EXIT:
MOV AX,4C00H INT 21H
L:
;ANOTHER METHORD JP EXIT
EXIT:
OR AL,80H MOV AX,4C00H INT 21H
CODE ENDS END START
16.(18)利用上题的予程序,对 DATA 开始的 256 个单元的数据加上偶校验,试编程序。 解答:
DATA SEGMENT DAT DB ...;256 DUP (?) RESULT DB ...;256 DUP (?) NUM EQU 256 COUNT EQU 7 DATA ENDS ;
STACK SEGMENT STACK ENDS ;
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA
- 25 -