微机原理课后题目答案(7)

2019-08-29 20:43

JA C1

CMP AL,'A' JB A1 SUB AL,7

A1: SUB AL,30H MOV AH,0 ADD NUM1[SI],AX POP CX

LOOP CONT

MOV DL,0DH ;回车换行 MOV AH,2 INT 21H

MOV DL,0AH INT 21H

LEA DX,STRING2 ;输入第二个加数(4 位十六进制数) MOV AH,9 INT 21H MOV SI,2 MOV CX,8 CONT1: PUSH CX CMP CX,4 JNZ B2 SUB SI,2

B2: MOV CL,4 SHL NUM2[SI],CL C2: MOV AH,1 INT 21H CMP AL,'0' JB C2

CMP AL,'F' JA C2

CMP AL,'A' JB A2 SUB AL,7 A2: SUB AL,30H MOV AH,0 ADD NUM2[SI],AX POP CX

LOOP CONT1

MOV DL,0DH ;回车换行 MOV AH,2 INT 21H

MOV DL,0AH INT 21H

LEA SI,NUM1 ;两数相加 LEA BX,NUM2 LEA DI,RESULT MOV CX,4 CLC

AD: MOV AL,[SI] ADC AL,[BX] MOV [DI],AL INC SI INC BX

INC DI LOOP AD

LEA DX,STRING3 ;显示结果(4 位十六进制数) MOV AH,9 INT 21H MOV CX,4

MOV DI,3 TT: PUSH CX

MOV DL,RESULT[DI] MOV CL,4 SHR DL,CL ADD DL,30H CMP DL,3AH JB D1 ADD DL,7 D1: MOV AH,2 INT 21H

MOV DL,RESULT[DI] AND DL,0FH ADD DL,30H CMP DL,3AH JB D2 ADD DL,7

D2: MOV AH,2 INT 21H DEC DI POP CX

LOOP TT

MOV AH,4CH ;返回DOS INT 21H CODE ENDS

END START

17. 编写2 位非压缩型BCD 码相乘的程序。 答:转化成加法进行累加运算。

DATA SEGMENT DA1 DB 09H,09H DA2 DB 09H,08H

RESULT DB 4 DUP(0) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

MOV AL,DA2+1 ;计算加法次数 MOV BL,10 MUL BL MOV BL,DA2 MOV BH,0

ADD AX,BX MOV CX,AX

CONT: MOV AH,0 ;通过循环做累加 MOV AL,RESULT ADD AL,DA1 AAA

MOV RESULT,AL MOV AL,RESULT+1 ADD AL,AH MOV AH,0 AAA

ADD AL,DA1+1 AAA

MOV RESULT+1,AL MOV AL,RESULT+2 ADD AL,AH MOV AH,0 AAA

MOV RESULT+2,AL MOV AL,RESULT+3 ADD AL,AH MOV AH,0 AAA

MOV RESULT+3,AL LOOP CONT

MOV AH,4CH ;返回DOS INT 21H

CODE ENDS END START

18. 编写完整的程序求N!,求N 大于6 时的运算结果,并在屏幕上显示结果。

答:DATA SEGMENT N DB 8 ;求8 的阶乘

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

MOV AL,N MOV AH,0

CALL FACT ;调用过程求N!,AX=N,BX=N!

CALL B2TODEC ;调用过程将结果转换为十进制,然后屏幕显示 MOV AH,4CH INT 21H FACT PROC CMP AL,0 JNZ CHN MOV BX,1 RET

CHN: PUSH AX

DEC AL

CALL FACT ;递归调用N!=N*(N-1)! POP AX MUL BX MOV BX,AX RET

FACT ENDP

B2TODEC PROC MOV CX,10000 CALL BIN MOV CX,1000 CALL BIN MOV CX,100 CALL BIN MOV CX,10 CALL BIN MOV CX,1 CALL BIN RET

B2TODEC ENDP BIN PROC MOV AX,BX MOV DX,0 DIV CX

MOV BX,DX

MOV DL,AL ADD DL,30H MOV AH,2 INT 21H RET BIN ENDP CODE ENDS

END START

19. 在附加段有一个数组,首地址为BUFF,数组中第一个字节存放了数组的长度。编一个 程序在数组中查找0,找到后把它从数组中删去,后续项向前压缩,其余部分补0。 答:DATA SEGMENT

BUFF DB 10, 1,0,2,3,4,0,5,6,7,0 ;10 个数 M EQU 0 DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, ES:DATA, DS:DATA START: MOV AX, DATA ; 初始化ES,DS MOV ES, AX MOV DS, AX

MOV AL, M ; 关键字M 存入AL MOV DI, OFFSET BUFF

MOV CL, [DI] ; 数组长度存入CX MOV CH, 0

INC DI ;指向数组起始地址 CLD ;清方向标志

L1: REPNE SCASB ;重复搜索关键字 JNZ STOP ; 未找到,转STOP 结束 JCXZ STOP ; 最后一个数是M,转STOP PUSH DI ;关键字下一单元地址和循 PUSH CX ;环次数入栈保护

DEL: MOV BL, [DI] ; 前移,末尾补0 MOV [DI-1], BL INC DI LOOP DEL

MOV BYTE PTR[DI-1], 0 POP CX ; 恢复CX,DI

POP DI

DEC DI ; 由于REPNE SCASB 已自动加1 JMP L1

STOP: MOV AH, 4CH INT 21H

CODE ENDS END START

20. 编程完成将第二个字符串插入到第一个字符串的指定位置上。


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

下一篇:塑化剂

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

马上注册会员

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