毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

微机原理课程设计_键盘录入数据的转换与显示_汇编课程设计

更新时间:2007-10-25:  来源:毕业论文

微机原理课程设计_键盘录入数据的转换与显示_汇编课程设计|精品课程网站设计|课程设计网报告总结心得

微机原理课程设计_键盘录入数据的转换与显示_汇编课程设计说明:

本程序能从键盘读入二个五位十进制数(1位符号位+4位数值位),并将这二个十进制数
分别转换为二进制数,然后求其和,再将和以十进制形式进行显示。

以下是b.asm文件;

;模块B:
PUBLIC  ASC_TO_BIN ,  BIN_TO_ASCII
DATA   SEGMENT   COMMON
INPUT_MESSAGE      DB  0AH , 'PLEASE INPUT A NUMBER(LESS THAN 5 FIGURES):$'
IN_ASC_BUF              DB 6                 ;十进制数的输入缓冲区,共可接收6个字符
DB ?                 ;保留,用于10号调用时DOS填入实际输入字符个数
DB 6 DUP(?)   ;一个符号位,四位数字ASCII码,加上一个回车符,
;共计6字符
BIN_BUF1                   DW ?                ;将第一个数转换为二进制后,放于此处
OUTPUT_MESSAGE  DB 0AH , 'THE SUM IS:' , '$'
OUT_ASC_SUM         DB 6 DUP(?) , '$'       ;将二个数的和转换为ASCII码后,放于此处,
;以供9号调用显示
DATA ENDS
CSEG   SEGMENT
ASSUME CS:CSEG ,  DS:DATA
ASC_TO_BIN PROC  FAR
;ASCII码转换为二进制数
;入口:十进制数的ASCII码在IN_ASC_BUF内
;出口:转换后的二进制数在AX内
;算法:先将其转换成十进制数字,再用累加和乘10加X的方法变成二进制数,如将
;358转换为二进制数,可先将累加和赋0,再计算(((0*10+3)*10+5)*10+8),结果为二
;进制数,再由符号位决定是否需要求补。
MOV CL ,  IN_ASC_BUF+1         ;取字符个数
MOV CH , 0
DEC CL                                          ;扣除符号位
MOV BX , OFFSET IN_ASC_BUF+3      ;调整BX指向十进制数的最高位
PUSH BX
PUSH CX
L1:
MOV AL , [BX]
AND AL , 0FH
MOV [BX] , AL
INC BX
LOOP L1                                        ;将所有数字字符的高四位清0,使之变为数字值
POP CX
POP BX
MOV AX , 0                                   ;累加和赋初值
MOV SI , 10
L2:
MUL SI
ADD AL , [BX]
ADC AH , 0
INC BX
LOOP L2                                        ;累加乘10
CMP IN_ASC_BUF+2 , '+'
JZ L3                                               ;符号是正号,转移
NEG AX                                         ;符号是负号,求补
L3:
RET
ASC_TO_BIN ENDP

BIN_TO_ASCII PROC  FAR
;将二进制数转换为对应十进制数数字的ASCII码
;入口:二进制数在AX内
;出口:转换后的ASCII码在OUT_ASC_SUM变量内
;算法:AX中的数范围在+32767到-32768之间,先检查AX中的符号位,以决定输出“+”
;还是“-”,若是负数,应先求补,得到原码后即可与正数作统一处理。转换方法为将被转换的
;二进制数先除以10000,商;即为万位数,再将余数除以1000,商为千位数,以此类推,求出
;百、十位数,剩下的为个位数。最后,将各个数加上30H,即成为对应字符。
MOV OUT_ASC_SUM , '+'
CMP AX , 0
JGE L4                                             ;不是负数,转移
NEG AX
MOV OUT_ASC_SUM , '-'
L4:
CWD
MOV BX , 10000
DIV BX
ADD AL , 30H                                 ; 将万位转换为数字(商应在AX内,但因为商不大于3,
;所以有效部分在AL内)
MOV OUT_ASC_SUM+1 , AL     ;保存万位数字
MOV AX , DX                                ;将余数置入AX内,以便当作被除数
CWD
MOV BX , 1000
DIV BX
ADD AL , 30H
MOV OUT_ASC_SUM+2 , AL     ;保存千位数字
MOV AX , DX                                ;将余数置入AX内,以便当作被除数
MOV BL , 100
DIV BL
ADD AL , 30H
MOV OUT_ASC_SUM+3 , AL     ;保存百位数字
MOV AL , AH
CBW
MOV BL , 10
DIV BL
ADD AL , 30H
MOV OUT_ASC_SUM+4 , AL      ;保存十位数字
ADD AH , 30H
MOV OUT_ASC_SUM+5 , AH     ;保存个位数字
RET
BIN_TO_ASCII   ENDP
CSEG  ENDS
END

以下是sjzhxs.asm文件:

EXTRN  ASC_TO_BIN:FAR ,  BIN_TO_ASCII:FAR
DATA  SEGMENT   COMMON
INPUT_MESSAGE  DB  0AH , 'PLEASE INPUT A NUMBER(LESS THAN 5 FIGURES):$'
IN_ASC_BUF          DB 6                  ;十进制数的输入缓冲区,共可接收6个字符
DB ?                  ;保留,用于10号调用时DOS填入实际输入字符个数
DB 6 DUP(?)    ;一个符号位,四位数字ASCII码,加上一个回车符,
;共计6字符
BIN_BUF1 DW ?                               ;将第一个数转换为二进制后,放于此处
OUTPUT_MESSAGE  DB   0AH , 'THE SUM IS:' , '$'
OUT_ASC_SUM DB 6 DUP(?) , '$'       ;将二个数的和转换为ASCII码后,放于此处,
;以供9号调用显示
DATA ENDS

CODE   SEGMENT
ASSUME  CS:CODE ,  DS:DATA
START:
MOV AX , DATA
MOV DS , AX
MOV DX , OFFSET INPUT_MESSAGE
MOV AH , 9
INT 21H                                    ;提示输入一个数
MOV DX , OFFSET IN_ASC_BUF
MOV AH , 10
INT 21H                                    ;读取第一个数
CALL ASC_TO_BIN               ;转换第一个数为二进制
MOV BIN_BUF1 , AX             ;保存第一个数
MOV DX , OFFSET INPUT_MESSAGE
MOV AH , 9
INT 21H                                    ;提示输入一个数
MOV DX , OFFSET IN_ASC_BUF
MOV AH , 10
INT 21H                                    ;读取第二个数
CALL ASC_TO_BIN               ; 转换第二个数为二进制
ADD AX ,  BIN_BUF1            ;计算这二个数之和
CALL BIN_TO_ASCII            ;将和转换为ASCII码,以供显示用
MOV DX , OFFSET OUTPUT_MESSAGE
MOV AH , 9
INT 21H
MOV DX , OFFSET OUT_ASC_SUM
MOV AH , 9
INT 21H
MOV AH , 4CH
INT 21H
CODE ENDS
END START

微机原理课程设计_键盘录入数据的转换与显示_汇编课程设计下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。