微机原理及应用答案 - 来源(3)

2019-09-01 14:01

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] JAE LL

MOV AL,[SI] LL: INC SI LOOP NEXT1

;将最大的字符的ASCII 码由AL 送DL 显示 MOV DL,AL MOV AH,2H INT 21H

;返回DOS

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

19.(29)编写汇编程序,接收从键盘输入的10 个数,输入回车符表示结束,然后将这些数 加密后存于BUFF 缓冲区中。加密表为:

输入数字:0,1,2,3,4,5,6,7,8,9;密码数字:7,5,9,1,3,6,8,0,2,4

解答:

DATA SEGMENT BUFF DB 10 DUP(?)

TABLE DB 7,5,9,1,3,6,8,0,2,4 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 DI,BUFF

NEXT: MOV AH,01H

INT 21H;从键盘上接收单个字符

CMP AL,0AH;与0AH 比,判是否要结束

JZ EXIT

SUB AL,30H;否则,将0~9 的ASCII 码转换为十进制数 LEA BX,TABLE

XLAT;用查表指令进行加密 MOV [DI],AL INC DI JMP NEXT

;退出并返回DOS

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

20.(23)有一个100 个字节的数据表,表内元素已按从大到小的顺序排列好,现给定一元素,

试编程序在表内查找,若表内已有此元素,则结束;否则,按顺序将此元素插入表中适当 的位置,并修改表长。 解答:

;调试时用了十个数据,本程序已通过调试


微机原理及应用答案 - 来源(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2006年各地高考模拟化学压轴题精选(附答案)

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

马上注册会员

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