汇编语言键盘输入十六进制加法
十六进制加法
DSEG SEGMENT 'DATA' DATA1 DB 5,0,5 DUP(?)
DB 5 DUP(?)
DATA2 DB 5,0,5 DUP(?)
DB 5 DUP(?)
DATA3 DB 6 DUP(?),'$' DATA4 DB 0DH,0AH,'SORRY!THE NUMBER IS ILLEGAL!',0DH,0AH,'$'
DSEG ENDS
SSEG SEGMENT STACK 'STACK'
DW 100h DUP(?) SSEG ENDS
DISP MACRO M
MOV DL,M
MOV AH,2
INT 21H
ENDM
CSEG SEGMENT 'CODE'
ASSUME CS:CODE,DS:DATA,SS:STACK
START PROC FAR
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
L1: MOV DX,OFFSET DATA1 ;键盘输入四位十六进制数
MOV AH,0AH
INT 21H
DISP 'H' ;屏幕显示H
DISP '+' ;屏幕显示加号
MOV DX,OFFSET DATA2 ;键盘输入四位十六进制数
MOV AH,0AH
INT 21H
DISP 'H' ;屏幕显示H
DISP '=' ;屏幕显示等号
MOV BX,10 ;赋值BX为10,作为除数,用以转换十六进制数为十进制数
XOR AX,AX ;AX清零,用来存十六进制数
LEA SI,DATA1[5] ;指针指向十六进制数的个位
CALL HUAN ;调用子程序
LEA SI,DATA1[11] ;指针指向DATA1[11],用来存入转换后的十进制数
CALL ZHUAN ;调用子程序
LEA SI,DATA2[5] ;指针指向十六进制数的个位
CALL HUAN ;调用子程序
LEA SI,DATA2[11] ;指针指向DATA2[11],用来存入转换后的十进制数
CALL ZHUAN ;调用子程序
LEA SI,DATA1[11] ;指针指向第一个十进制数
LEA DI,DATA2[11] ;指针指向第二个十进制数
LEA BX,DATA3[5] ;指针指向DATA3[5],用来存入相加的结果
MOV CX,5 ;循环次数为5(五位数相加,加五次)
CLC ;CF位清零
L2: MOV AL,[SI] ;以下为相加的程序
ADC AL,[DI]
AAA
PUSHF
OR AL,30H
POPF
MOV [BX],AL
DEC SI
DEC DI
DEC BX
LOOP L2
JNC L3
MOV [BX],'1' L3: MOV DX,OFFSET DATA3 ;屏幕显示和
MOV AH,09H
INT 21H
MOV AH,4CH ;返回DOS
INT 21H
RET
START ENDP
HUAN PROC ;将四位十六进制数按位存入AX
CALL BIAN
OR AL,DL
CALL BIAN
MOV CL,4
SHL DL,CL
OR AL,DL
CALL BIAN
OR AH,DL
CALL BIAN
MOV CL,4
SHL DL,CL
OR AH,DL
RET
HUAN ENDP
BIAN PROC ;判断输入的十六进制数是否合法?
MOV DL,[SI]
CMP DL,30H ;是否在0-9范围内
JB ERROR
CMP DL,3AH
JB A1
CMP DL,41H ;是否在A-F范围内
JB ERROR
CMP DL,47H
JB A2
CMP DL,61H ;是否在a-f范围内
JB ERROR
CMP DL,67H
JB A2
ERROR: LEA DX,DATA4 ;屏幕显示输入非法'SORRY!THE NUMBER IS
ILLEGAL!'
MOV AH,09H
INT 21H
JMP L1
A1: AND DL,0FH ;该位十六进制数为数字,高位清零
JMP A3
A2: ADD DL,09H ;该位十六进制数为字母,数值加九后,高位清零
AND DL,0FH
A3: DEC SI
RET
BIAN ENDP
ZHUAN PROC
C1: XOR DX,DX ;AX除以BX,得到的余数(在DL内),即为转换后的十进
制数
DIV BX
OR DL,30H
MOV [SI],DL
DEC SI
CMP AX,0 ;判断AX=0?是,所有十六进制数全部转换为了十进制
数;否则,继续AX除以BX
JNZ C1
RET
ZHUAN ENDP
CSEG ENDS
END START
本文档为【汇编语言键盘输入十六进制加法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。