微机原理 习题答案(4)

2019-02-21 00:48

INC DI INC DI

NEXT: INC SI INC SI

LOOP AGAIN

;找出ARRAY_EVEN 中的最大数 LEA SI,ARRAY_EVEN MOV CX,999 MOV AX,[SI] MOV BX,AX INC SI INC SI

NEXT: CMP AX,[SI] JAE LL

MOV AX,[SI] LL: INC SI INC SI

LOOP NEXT MOV MAX,AX

;找出ARRAY_EVEN 中的最小数(第13 题增加的部分) LEA SI,ARRAY_EVEN MOV CX,999 MOV AX,[SI]

MOV BX,AX INC SI INC SI

NEXT: CMP AX,[SI] JBE SS

MOV AX,[SI] SS: INC SI 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

MOV BX,0000 MOV DX,0000

AGAIN: MOV AX,[SI] ADD BX,AX JNC NEXT

ADC DX,1 NEXT: INC SI INC SI

LOOP AGAIN MOV CX,100H MOV AX,BX DIV CX

;找出DAT 中的小于平均值的个数 LEA SI,DAT MOV CX,100H MOV DX,0000H

AGAIN0:MOV BX,[SI]

CMP BX,AX;与平均值AX 比较,大于等于则转NEXT0,否则将读数器DX 加1 JGE NEXT0 INC 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 START: MOV AX,DATA MOV DS,AX PUSH AX MOV DX,0

MOV CX,COUNT AGAIN: RCR AL,1 JNC L INC DX L: LOOP AGAIN POP AX TEST DX,01 JZ EXIT OR AL,80

EXIT: MOV AX,4C00H INT 21H

;ANOTHER METHORD JP EXIT OR AL,80H

EXIT: 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 MOV DS,AX LEA SI,DAT LEA DI,RESULT MOV CX,NUM

NEXT: MOV AL,[SI] CALL SUB1

MOV [DI],AL;MOV [SI],AL INC SI INC DI

LOOP NEXT MOV AX,4C00H INT 21H SUB1 PROC PUSH AX MOV DX,0

MOV CX,COUNT AGAIN: RCR AL,1 JNC L INC DX

L: LOOP AGAIN POP AX TEST DX,01 JZ QUIT OR AL,80H QUIT: RET SUB1 ENDP CODE ENDS END START

17.(19)试编写程序实现将键盘输入的小写字母转换成大写字母并输出。 解答:

DATA SEGMENT

MESS DB 'THE INPUT IS NOT CORRECT.',0DH,0AH,'$' DATA ENDS ;

STACK SEGMENT STACK ENDS ;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX

NEXT: MOV AH,01H INT 21H

CMP AL,'Q' JZ EXIT

CMP AL,'a' JB ERROR CMP AL,'z' JA ERROR SUB AL,20H MOV AH,02H MOV DL,AL INT 21H JMP NEXT

ERROR: MOV AH,09H LEA DX,MESS INT 21H JMP NEXT

EXIT: MOV AX,4C00H INT 21H CODE ENDS END START

18.从键盘接收20 个字符,按键入顺序查找最大的字符,并显示输出。 解答:

DATA SEGMENT DAT DB 20 DUP(?) DATA ENDS ;

STACK SEGMENT STACK ENDS ;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX

;从键盘接收20 个字符,并送DAT 中保存 LEA SI,DAT MOV CX,20

NEXT: MOV AH,01H INT 21H

MOV [SI],AL INC SI

LOOP NEXT

;比较20 个字符中的最大字符,并放入AL 中 MOV CX,19

LEA SI,DAT MOV AL,[SI] INC SI

NEXT1: CMP AL,[SI]


微机原理 习题答案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:GIS习题及参考答案(2)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: