注册 登录
编程论坛 汇编论坛

加法怎么改成减法?

uatoily 发布于 2007-06-29 17:07, 1577 次点击
下面的代码是2个数相加
现在我想要改成2个数相减要怎么减?
还有我想要相减后的绝对值就是 如果相减后是-1 输出的是1 ...帮我改一下...谢谢啦
DATA SEGMENT
BUF DB 3,?,3 DUP(?)
ORG 10H
BUF1 DB ?,?,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H
MOV SI,OFFSET BUF
MOV AX,[SI+2]
SUB AX,3030H
ADD AL,AH
DAA
MOV BL,AL
AND AL,0FH
ADD AL,30H
MOV SI,OFFSET BUF1
MOV [SI+1],AL
AND BL,0F0H
MOV CL,4
SAR BL,CL
ADD BL,30H
MOV [SI],BL
MOV DX,OFFSET BUF1
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
10 回复
#2
爱以走远2007-06-29 17:30

要得绝对值
就用大的一个数去减不就行拉
先比较一哈

#3
uatoily2007-06-30 18:12

怎么都没有人帮我改一下代码啊...555555555555

#4
爱以走远2007-07-01 00:02

你程序好象不能实现加法哦

#5
爱以走远2007-07-01 00:15
好拉
这个 偶找的一个加法 改拉一哈


DATA SEGMENT
X DB ?
Y DB ?
S DB ?
mess1 db "Input x=(0 quit)","$"
mess3 db 'Input y=','$'
mess2 db '|x-y|=','$'
DATA ENDS
stack segment para stack 'stack'
dw 100 dup(?)
stack ends
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:stack
START: MOV AX,DATA
MOV DS,AX
l1: lea dx,mess1
mov ah,9
int 21h
MOV AH,1
INT 21H
cmp al,30h
je l2
MOV X,AL
call cr_lf
lea dx,mess3
mov ah,9
int 21h
MOV AH,1
INT 21H
MOV Y,AL
MOV AL,X
AND AL,0FH
MOV BL,Y
AND BL,0FH
cmp bl,al
jl lop
sub bl,al
mov al,dl
jmp lop1
lop: sub al,bl
lop1:
MOV S,AL
call cr_lf
push ax
mov dx,offset mess2
mov ah,9
int 21h
pop ax
OR AL,30H
MOV AH,2
MOV DL,AL
INT 21H
call cr_lf
jmp l1
l2: MOV AH,4CH
INT 21H
cr_lf proc
push ax
push dx
mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
pop dx
pop ax
ret
cr_lf endp
CODE ENDS
END START
#6
uatoily2007-07-01 18:23
谢谢啦...懂了..多学习才是王道啊
#7
uatoily2007-07-01 20:18

版主啊....好象你写的好多错啊....改一下好吗?键盘输入不是8 吗怎么变9了?

#8
爱以走远2007-07-01 23:16
怎么会没错
不是吧 我调过
还运行过拉的哦
#9
爱以走远2007-07-01 23:21
只有本站会员才能查看附件,请 登录


这里 你下来看看
#10
uatoily2007-07-01 23:44

.....好象运行是可以的-_#为什么我编译的时候会出错郁闷-_#...回去好好看一下

#11
爱以走远2007-07-01 23:57
你用的什么编译器   
1