微机课后习题答案(7)

2020-04-14 01:38

RET

BCDTOB2 ENDP

9. 编写两个通用过程,一个完成ASCII 码转换成二进制数功能,另一个完成ASCII 字符显 示输出功能。 答:(1)将AX 中两位ASCII 码先转化成数字,然后AH*10+AL。

子程序名:ASCIITOB2

输入参数:AX=2 位ASCII 码 输出参数:AX=转换后二进制数 使用寄存器:BX,CX,DX ASCIITOB2 PROC FAR PUSH BX PUSH CX PUSH DX MOV BX,AX SUB AH,30H MOV AL,AH

MOV CL,10 ;乘以10 MUL CL MOV DX,AX MOV AX,BX SUB AL,30H MOV AH,0 ADD AX,DX POP DX POP CX POP BX RET

ASCIITOB2 ENDP

(2)使用2 号DOS 功能调用显示字符。 子程序名:DISPLAY

输入参数:AX=2 位ASCII 码 输出参数:无

使用寄存器:BX,DX DISPLAY PROC FAR PUSH BX PUSH DX MOV BX,AX MOV DL,AH MOV AH,2 INT 21H MOV AX,BX MOV DL,AL

MOV AH,2 INT 21H POP DX POP BX RET

DISPLAY ENDP

10. 编制两个通用过程,完成十六进制数转换成ASCII 码并将ASCII 码字符显示。 答:(1)子程序名:HEXTOASC 输入参数:AX:4 位十六进制数

输出参数:DX,AX:4 位ASCII 码,DX 高2 位,AX 低2 位使用寄存器:BX,CX,DX HEXTOASC PROC FAR PUSH BX PUSH CX PUSH DX MOV BX,AX

MOV CL,4 ;转换AH 高4 位 SHR AX,CL AND AX,0F00H ADD AH,30H CMP AH,3AH JB A1

ADD AH,7

A1: MOV DH,AH

MOV AX,BX ;转换AH 低4 位 AND AX,0F00H ADD AH,30H CMP AH,3AH JB A2

ADD AH,7

A2: MOV DL,AH

MOV BH,BL ;转换AL 高4 位 MOV CL,4 SHR BL,CL ADD BL,30H CMP BL,3AH JB A3 ADD BL,7

A3: MOV AH,BL

AND BH,0FH ;转换AL 低4 位 ADD BH,30H CMP BH,3AH JB A4

ADD BH,7

A4: MOV AL,BH POP DX POP CX POP BX RET

HEXTOASC ENDP

(2)子程序名:DISPLAYASC

输入参数:DX,AX:4 位ASCII 码 输出参数:无

使用寄存器:BX,CX DISPLAYASC PROC FAR PUSH BX PUSH CX MOV BX,DX MOV CX,AX MOV DL,BH MOV AH,02H INT 21H MOV DL,BL INT 21H MOV DL,CH INT 21H MOV DL,CL INT 21H MOV DL,?H? INT 21H POP CX POP BX RET

DISPLAYASC ENDP

11. 某程序可从键盘接收命令(0~5),分别转向6 个子程序,子程序入口地址分别为P0~

P5,编制程序,用跳转表实现分支结构。 答: DATA SEGMENT TABLE DW 6 DUP(?) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI, TABLE

MOV WORD PTR[SI],OFFSET P0 MOV WORD PTR[SI+2],OFFSET P1

MOV WORD PTR[SI+4],OFFSET P2 MOV WORD PTR[SI+6],OFFSET P3 MOV WORD PTR[SI+8],OFFSET P4 MOV WORD PTR[SI+10],OFFSET P5 MOV AH,1 INT 21H SUB AL,30H SHL AL,1 MOV AH,0 MOV SI,AX JMP TABLE[SI] P0: P1: P2: P3: P4: P5:

MOV AH,4CH INT 21H CODE ENDS END START

12. 在首地址为TABLE 的数组中按递增次序存放着100 个16 位补码数,编写一个程序,把

出现次数最多的数及其出现次数分别存放于AX 和BL 中。 答: DATA SEGMENT

TABLE DW 100 DUP (?) ;数组中的数据是按增序排列的 NUM DW ? COUNT DW 0 DATA ENDS

CODE SEGMENT MAIN PROC FAR

ASSUME CS: CODE, DS: DATA START: PUSH DS ;设置返回DOS SUB AX, AX PUSH AX

MOV AX, DATA

MOV DS, AX ;给DS 赋值

BEGIN: MOV CX, 100 ;循环计数器 MOV SI, 0

NEXT: MOV DX, 0 MOV AX, TABLE[SI]

COMP: CMP TABLE [SI], AX ;计算一个数的出现次数 JNE ADDR INC DX

ADD SI, 2 LOOP COMP

ADDR: CMP DX, COUNT ;此数出现的次数最多吗? JLE DONE

MOV COUNT, DX ;目前此数出现的次数最多,记下次数 MOV NUM, AX ;记下此数

DONE: LOOP NEXT ;准备取下一个数

MOV CX, COUNT ;出现最多的次数存入(CX) MOV AX, NUM ;出现最多的数存入(AX) RET

MAIN ENDP

CODE ENDS ;以上定义代码段 END START

13. 将键盘上输入的十六进制数转换成十进制数,在屏幕上显示。

答:DATA SEGMENT

STRING DB 'INPUT 4 HEX NUM:',0AH,0DH,'$' NUM DB 10 DUP(?) DATA ENDS

CODE SEGMENT

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

LEA DX,STRING ;显示提示信息 MOV AH,9 INT 21H MOV BP,4 MOV DX,0

CONT: MOV CL,4 ;输入4 位十六进制数􀃆DX SHL DX,CL D1: MOV AH,1 INT 21H CMP AL,'0' JB D1

CMP AL,'F' JA D1

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

A1: SUB AL,30H MOV AH,0 ADD DX,AX DEC BP JNZ CONT


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

下一篇:2017-2018学年浙江省湖州市南浔区九年级(上)期末数学试卷-普通

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

马上注册会员

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