输入两个一位十六进制,输出其乘积(8086汇编程序)

来源:互联网 发布:php短信轰炸机源码 编辑:程序博客网 时间:2024/05/01 02:24

ASSUME CS:CODES
CODES SEGMENT
START:
mov ah,01h ;输入第一个数
int 21h
mov bl,al

mov ah,01h ;输入第二个数
int 21h

cmp bl,’9’ ;判断是1-9还是A-F
ja ne1
sub bl,’0’

s: cmp al,’9’
ja ne2
sub al,’0’
jmp mu

ne1:sub bl,’A’ ;对A-F处理
add bl,10
jmp s

ne2:sub al,’A’ ;对A-F处理
add al,10

mu: mul bl
mov bl,al ;结果放在al中
and al,0Fh
mov cl,4
shr bl,cl ;把al中的八个二进制位分开

cmp bl,9 ;转换成ASII码输出(1-9和A-F)
ja n1
add bl,’0’
jmp n2
n1: add bl,37h
n2: cmp al,9
ja n3
add al,’0’
jmp n4
n3: add al,37h

n4: mov cl,al

mov dl,bl ;输出高位
mov ah,2
int 21h

mov dl,cl ;输出低位
mov ah,2
int 21h

mov ax,4c00h
int 21h
CODES ENDS
END START

运行结果如图所示,mov ah,01h int 21h 输入并回显,把值放在al中 mov ah,02h int 21h 输出,预先把值放在dl中,值为asii码,要转换并进行运算
2*3=06 2*A=14(均为十六进制表示)运行结果

0 0