用汇编语言编一个加法程序

用汇编语言编一个加法程序,第1张

输入格式必须为A+或-或/或*B=

按回车结束运算数为(0~255)

DATAS SEGMENT

x db 20 dup(?)

y db 'chu cuo le','$'

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:

MOV AX,DATAS

MOV DS,AX

JMP A

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

输入数字

A: MOV AH,01H

INT 21H

CMP AL,0DH

JZ L

CMP AL,30H

JB B

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 A

判断+-*/=

B: CMP AL,2BH

JNZ K

MOV X[SI],BL

INC SI

MOV CL,0H

AND BL,0

JMP A

K: CMP AL,2DH

JNZ D

MOV X[SI],BL

INC SI

MOV CL,01H

AND BL,0

JMP A

D: CMP AL,2AH

JNZ E

MOV X[SI],BL

INC SI

MOV CL,02H

AND BL,0

JMP A

E: CMP AL,2FH

JNZ T

MOV X[SI],BL

INC SI

MOV CL,03H

AND BL,0

JMP A

计算

F: MOV [SI],BL

CMP AL,3DH

JNZ T

LEA SI,X

MOV AL,X[SI]

INC SI

MOV BL,X[SI]

CMP CL,0

JNZ G

ADD AL,BL

JMP J

G: CMP CL,01H

JNZ H

SUB AL,BL

JMP J

H: CMP CL,02H

JNZ I

AND AH,0

MUL BL

JMP J

I: AND AH,0

CMP CL,03H

DIV BL

输出

J: AND 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

ER: CMP AL,10

JB YI

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

加法(ADD)和带进位加法(ADC)最大的区别就是,ADC除了完成ADD加法指令运算,还必须和加进位标志位相加,才能得到最终计算结果。

加法(ADD)功能是实现两个 *** 作数相加,其结果送至目的 *** 作数,源 *** 作数不变。两个 *** 作数不能同时为存储器寻址方式。

带进位加法(ADC)指令主要用于与ADD指令相结合实现多字节数相加。对 *** 作数的要求也与add指令一样。运算结果对PSW(程序状态字)有影响。

共有四种寻址方式:立即寻址、直接寻址、寄存器寻址和寄存器间接寻址。

扩展资料

逻辑运算指令:

这部分指令用于执行算术和逻辑运算,包括加法指令ADD/ADC、减法指令SUB/SBB、加一指令INC、减一指令DEC;

比较 *** 作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV

符号扩展指令CBW/CWDE/CDQE、十进制调整指令DAA/DAS/AAA/AAS、逻辑运算NOT/AND/OR/XOR/TEST等。

参考资料来源:百度百科--加法指令


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

原文地址: https://outofmemory.cn/yw/12111225.html

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

发表评论

登录后才能评论

评论列表(0条)

保存