微机原理与接口技术(苏州大学出版社) - 习题答案(6)

2019-05-17 13:40

错误!未指定书签。与接口技术

6.13 编写子程序,要求从键盘输入一个4位的十六进制数,然后将其转换成二进制数并在屏幕上显示出来。

解:

START:

AGAIN:

DECI:

LOOP1:

ONE: DISPL:

DATPRO SEGMENT BUFF DB 5 DB ?

DB 5 DUP(?) DATPRO ENDS PROSEG SEGMENT

ASSUME CS:PROSEG,DS:DATPRO MOV AX,DATPRO MOV DS,AX LEA DX,BUFF MOV AH,0AH INT 21H

MOV BL,[BUFF+1] LEA SI,BUFF+2 MOV AL,[SI] CMP AL,30H JB EXIT CMP AL,39H JBE DECI CMP AL,61H JB EXIT CMP AL,66H JA EXIT SUB AL,27H SUB AL,30H MOV CL,4 SHL AL,CL MOV CX,4 SHL AL,1 JC ONE

MOV DL,30H JMP DISPL MOV DL,31H PUSH AX MOV AH,2 INT 21H POP AX LOOP LOOP1 SUB AL,20H MOV DL,AL MOV AH,02H INT 21H JMP NEXT POP DX POP AX RET

KEYIN ENDP CODE ENDS END KEYIN

文件名:微机原理与接口技术习题 第 26 页 共 61 页

EXIT:

INC BL INC SI CMP BL,0 JNZ AGAIN MOV AH,4CH INT 21H PROSEG ENDS END START

习 题

6.14 编写一个子程序,实现8位无符号数的除法运算,被除数、除数、商和余数存放在自DATA开始的存储单元中。

解: CODESUB SEGMENT

ASSUME CS:CODESUB SUBPRO PROC FAR PUSH AX PUSH BX PUSH DX

MOV AL,DATA CBW

DIV DATA+1 PUSH AX CBW

CALL DISPL POP AX

MOV AL,AH CBW

CALL DISPL POP DX POP BX POP AX RET

SUBPRO ENDP ; DISPL PROC NEAR MOV BL,100 DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX

MOV AL,AH CBW

MOV BL,10 DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2

INT 21H

文件名:微机原理与接口技术习题 第 27 页 共 61 页

错误!未指定书签。与接口技术

6.15设有一个由30个数据组成的数组DGRP,编写一完整的汇编语言程序,将该数组分成正数组PGRP和负数组NGRP,并且统计和显示这两个数组中数据的个数。

解:

START:

NEXT:

GOON:

DATSEG SEGMENT

DGRP DW 30 DUP(?) PGRP DW 30 DUP(?) NGRP DW 30 DUP(?) DATSEG ENDS PROSEG SEGMENT MAIN PROC FAR

ASSUME CS:PROSEG,DS:DATSEG PUSH DS

SUB AX,AX PUSH AX

MOV AX,DATSEG MOV DS,AX MOV CX,30 MOV DX,0 LEA BX,DGRP LEA SI,PGRP LEA DI,NGRP MOV AX,[BX] AND AX,AX JL NEGD INC DH

MOV [SI],AX ADD SI,2 JMP GOON

NEGD: INC DL MOV [DI],AX ADD DI,2 ADD BX,2 LOOP NEXT MOV BL,10 MOV AL,DL CALL DISPL MOV AL,DH CALL DISPL RET

POP AX

MOV DL,AH ADD DL,30H MOV AH,2 INT 21H MOV DL,‘,’ MOV AH,2 INT 21H RET

DISPL ENDP CODESUB ENDS END

文件名:微机原理与接口技术习题 第 28 页 共 61 页

MAIN ENDP

习 题

DISPL PROC NEAR CBW

DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX

ADD AH,30H MOV DL,AH MOV AH,2 INT 21H MOV DL,‘,’ MOV AH,2 INT 21H RET

DISP ENDP PROSEG ENDS END START

6.16 设有一组考核数据以字节为单位存放在名为TEST的内存缓冲区中,这些数据都是不超过100的正整数,其中第1个单元存放的是该数组中数据的个数。若将小于60的数划分为等第C,60~80划分为等第B,大于80的数划分为等第A,编程分别统计这三个等第中数据的个数,并在屏幕上显示出统计结果。

解: ;

START:

STATI:

BCRANK:

DATASEG SEGMENT

TEST DB 256 DUP(?) A DB 0 B DB 0 C DB 0 DATASEG ENDS

CODESEG SEGMENT MAIN PROC FAR

ASSUME CS:CODESEG,DS:DATASEG PUSH DS SUB AX,AX PUSH AX

MOV AX,DATASEG MOV DS,AX LEA SI,TEST MOV CL,[SI] MOV CH,0 INC SI

MOV AL,[SI] CMP AL,80 JBE BCRANK INC A JMP NEXT CMP AL,60

第 29 页 共 61 页

文件名:微机原理与接口技术习题

错误!未指定书签。与接口技术

CRANK: NEXT: ;

6.17 从键盘输入某班学生某门课程的成绩,存入内存中,然后将成绩进行分析统计,分别求出九十分以上、八十至八十九分、七十至七十九分、六十至六十九分、六十分以下这五个分数段中各有多少人?五个分数段分别用A、B、C、D、E表示,全班的平均成绩是多少(只取整数)?并将统计结果在屏幕上显示出来。

.MODEL SMALL

JB CRANK

INC B JMP NEXT INC C INC SI

LOOP STATI MOV AL,A CALL DISPL MOV AL,B CALL SISPL MOV AL,C CALL DISPL RET

MAIN ENDP DISPL PROC NEAR CBW

MOV BL,100 DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX

MOV AL,AH CBW

MOV BL,10 DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX

ADD AH,30H MOV DL,AH MOV AH,2 INT 21H MOV DL,‘,’ MOV AH,2 INT 21H RET

DISP ENDP CODESEG ENDS END START

文件名:微机原理与接口技术习题 第 30 页 共 61 页


微机原理与接口技术(苏州大学出版社) - 习题答案(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:速记日语常用语汉语发音

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

马上注册会员

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