S=86H*34H-22H=1B38H-22H=1B16H
code segment
assume cs:code,ds:code
org 100h COM格式
start:
push cs
pop ds
mov ax,0e53h 显示'S'
int 10h
mov al,'='显示'='
int 10h
call @IN
mov dl,al
mov bl,2ah"*"
call show 显示'H*'
call @IN
mov dh,al
mov bl,2dh "-"
call show 显示'H-'
call @IN
mov ah,0
mov bp,ax
mov bl,3dh "="
call show 显示'H='
mov ah,0
mov al,dl AL←86H
mov bl,dh BL←34H
mul bl 86H*34H
未考虑不够减的情况
sub ax,bp AX←AX-22H
mov cx,4
mov dx,ax
next:
push cx
mov cl,4
rol dx,cl
mov ax,dx
and al,0fh 取出一位
or al,30h 二进制转换为Ascii
cmp al,'9'比9小直接显示
jb T2
add al,7 是A`F的,加7校正
T2:
mov ah,0eh 显示Ascii
int 10h
pop cx
loop next 下一位
mov ax,0e48h 'H'
int 10h
mov ah,0
int 16h 暂停
mov ah,4ch
int 21h 结束
@IN:可输入两位十六进制数
xor bx,bx BX←0
mov cx,4
@1:call input
mov bl,al
shl bl,cl BL←BL*10H
call input
add al,bl AL←两位十六进制数
ret
input: 仅允许输入并显示0-9和A-F
mov ah,0
int 16h 无回显键盘输入
cmp al,'0'十六进制数 0-F
jb input 为有效输入
cmp al,'9'
jbe Q1
and al,0dfh 大小写,同转为大写
cmp al,'A'"A(a)"
jb input
cmp al,'F'"F(f)"
ja input
Q1:mov ah,0eh
int 10h 显示有效输入
sub al,30h 0-9之间,Ascii转换为二进制
cmp al,9
jbe Q3
sub al,7
Q3:ret
show:
mov ax,0e48h "H"
int 10h
mov al,bl
int 10h
ret
code ends
end start
输入格式必须是A +或 - 或/或* B =按Enter年底计算数(0255)
DATAS段
所述DB 20 dup的(?)
DB'CHU痤勒','$'
DATAS ENDS
CODES分部
ASSUME <CS:CODES过,DS的人:DATAS START如下:
MOV AX,DATAS
MOV DS,AX
。JMPA
KAISHI:
回车换行符
MOV DL,0DH MOV的AH,02H INT 21H
MOV DL,0AH
INT 21H
的LEA SI中,X
SUB AX的,AX
SUB的BX,BX
SUB CX,CX
SUB DX,DX
输入数字
- 答:MOV AH,01H
INT 21H
CMP AL,0DH
>JZ
的CMP AL,30H
JBB
的CMP AL,3AH
JNB F
SUB AL,30H
MOV CH,AL的
>MOV AL,BL
MOV BL,0AH
的MUL BL
ADD AL,CH
MOV BL,AL的
。JMP
的判断+ - * / =
B:的CMP AL,2BH
JNZ MOV X [SI],BL
INC的SI
MOV CL,0H
AND BL, 0
JMPA
K:的CMP AL,2DH
JNZe
MOV X [SI],BL
INC的SI
MOV CL,01H
title>和BL,0 JMPA
D:的CMP AL,2AH
JNZê
MOV X [SI],BL
INC SI
MOV CL,02H
AND BL,0
JMPA
E:的CMP AL,2FH
JNZ
MOV X [的SI],BL
INC的SI
,03H MOV CL
和BL,0
JMPá
计算
F:MOV [SI],BL
CMP AL,3DH BR />JNZ
的LEA SI中,X
MOV的AL中,X [SI]
INC的SI
MOV BL中,X [SI]
CMP CL,0 BR />JNZ
ADD AL,BL
JMP
G:的CMP CL,01H
JNZ SUB AL,BL
JMP J BR />H:的CMP CL,02H
JNZ我
AND AH,0
的MUL BL
JMP
我:AND AH,0
CMP CL,03H
DIV BL
输出
J:和AH,0
的CMP AL,100
JB ER
MOV的BL,100
>DIV BL
MOV CL,AH
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,CL BR />ER“:●CMP AL,10个
JB毅
MOV BL,10
AND AH,0
DIV BL
ADD AL,30H
MOV DL,AL
MOV CL,AH
MOV的AH,02H
INT 21H
MOV AL,CL
YI“:ADD AL,30H
MOV DL的, AL
MOV的AH,02H
INT 21H
JMP KAISHI
T:LEA的DX,Y。 MOV AH,09H
INT 21H
JMP KAISHI
L:MOV的AH,4CH的
INT 21H
CODES ENDS ”END START“
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)