微机原理作业及参考答案

发布时间 : 星期日 文章微机原理作业及参考答案更新完毕开始阅读

NEXT2: INC DI

LOOP CNUM2 MOV AH,24H

MOV [DI],AH POP DI POP BP POP CX POP BX POP AX RET 6 BINTOASC ENDP

DISP PROC NEAR

LEA DX,ASCBUF MOV AH,09H INT 21H RET DISP ENDP

CODE ENDS

END START 4-32

STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS

DATA SEGMENT STR1 DB 8 DUP(0) ;存储输入的6位十进制数ASCII码,STR1[2]~STR1[7],分别保存十万~个位,下同 STR2 DB 8 DUP(0) SUM DB 8 DUP(0) ;存储结果的ASCII码 BCD1 DB 3 DUP(0) ;存储输入的6位十进制数的压缩BCD码,BCD1[2]~BCD1[0],分别保存十万~个位,下同 BCD2 DB 3 DUP(0) BCDSUM DB 4 DUP(0) ;存储结果的BCD码

MESG1 DB 'PLEASE INPUT THE FIRST NUMBER : $' MESG2 DB 'PLEASE INPUT THE SECOND NUMBER : $' MESG3 DB 'THE SUM IS : $' DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

HCHH PROC FAR ;回车换行子函数子程序 MOV AH,02H

MOV DL,0DH INT 21H

MOV DL,0AH INT 21H RET HCHH ENDP

GETSTR PROC FAR ;从键盘输入字符串子程序 MOV AH,0AH INT 21H ;调用10(0AH)号DOS中断,从键盘输入字符串 RET GETSTR ENDP

ASCTOBCD PROC FAR ;ASCII转BCD码子程序,SI指向ASCII串,DI指向BCD串

MOV CX,3 NEXT1: MOV AL,[SI] SUB AL,30H PUSH CX MOV CL,4 SHL AL,CL POP CX

MOV [DI],AL INC SI MOV AL,[SI] SUB AL,30H ADD [DI],AL DEC DI INC SI

LOOP NEXT1 RET ASCTOBCD ENDP

BCDADD PROC FAR ;两个BCD码相加子程序,SI和DI指向两个被加数,BX指向结果

MOV CX,3 NEXT2: MOV AL,[SI] MOV AH,[DI] ADC AL,AH DAA

MOV [BX],AL INC SI INC DI INC BX

LOOP NEXT2 JNC NEXT3 ;如果结果有第7位,则将这位写入结果中 MOV BCDSUM[3],1 NEXT3: RET BCDADD ENDP

BCDTOASC PROC FAR ;BCD码转ASCII码子程序,SI指向BCDASCII串,DI指向ASCII串 MOV CX,3

CMP BCDSUM[3],1 ;如果结果有第7位,则将这位转变为ASCII码 JNE NEXT4

MOV SUM[0],31H NEXT4: MOV AL,[SI] ;转变剩下的6位 AND AL,0F0H PUSH CX MOV CL,4 SHR AL,CL POP CX ADD AL,30H MOV [DI],AL INC DI

MOV AL,[SI] AND AL,0FH ADD AL,30H MOV [DI],AL INC DI DEC SI

LOOP NEXT4

MOV SUM[7],24H ;9号DOS中断的要求,被显示串要以'$'结尾 RET BCDTOASC ENDP

DISP PROC FAR ;显示字符串子程序 LEA DX,SUM MOV AH,09H INT 21H ;调用9号DOS中断,显示字符串 RET DISP ENDP

START: MOV AX,DATA MOV DS,AX

MOV DX,OFFSET MESG1 ;显示\INPUT THE FIRST NUMBER : \

MOV AH,09H

INT 21H

LEA DX,STR1

MOV STR1[0],7 CALL GETSTR ;从键盘输入字符串,即6位十进制数 CALL HCHH LEA SI,STR1[2] LEA DI,BCD1[2] CALL ASCTOBCD ;ASCII转BCD码

MOV DX,OFFSET MESG2 ;显示\INPUT THE FIRST NUMBER : \

MOV AH,09H

INT 21H LEA DX,STR2 MOV STR2[0],7 CALL GETSTR ;从键盘输入字符串,即6位十进制数 CALL HCHH LEA SI,STR2[2]

LEA DI,BCD2[2] CALL ASCTOBCD ;ASCII转BCD码 LEA SI,BCD1 LEA DI,BCD2 LEA BX,BCDSUM

CALL BCDADD LEA SI,BCDSUM[2] LEA DI,SUM[1] CALL BCDTOASC ;两个BCD码相加 MOV DX,OFFSET MESG3 MOV AH,09H INT 21H CALL HCHH CALL DISP ;显示结果字符串 MOV AH,4CH INT 21H CODE ENDS

END START

第五章 半导体存储器(P221)

5-5

联系合同范文客服:xxxxx#qq.com(#替换为@)