云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 微机课后习题答案

微机课后习题答案

  • 62 次阅读
  • 3 次下载
  • 2025/12/11 1:06:15

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. 编程完成将第二个字符串插入到第一个字符串的指定位置上。

答:DATA SEGMENT

STRING1 DB 'THIS IS THE FIRST STRING!','$' DB 100 DUP(0) ;缓冲区

NUM1 DW ? ;字符串1 的长度 STRING2 DB 'the second string!','$' NUM2 DW ? ;字符串2 的长度 POS DW 8 ;插入位置 DATA ENDS

CODE SEGMENT

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

LEA DI,STRING1 ;求字符串1 的长度存入NUM1 MOV AL,'$' MOV NUM1,0 CLD

D1: SCASB JZ D2

INC NUM1 JMP D1

D2: LEA DI,STRING2 ;求字符串2 的长度存入NUM2 MOV AL,'$' MOV NUM2,0 CLD

D3: SCASB JZ D4

INC NUM2 JMP D3

D4: LEA SI,STRING1 ;将字符串1 自插入位置开始的字符向后移动,

ADD SI,NUM1 ;空出位置以便插入字符串2 MOV DI,SI ADD DI,NUM2 STD

MOV CX,NUM1

搜索更多关于: 微机课后习题答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

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

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com