汇编加法程序

汇编加法程序,第1张

经验证,下式结果正确

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“


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8151850.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存