汇编语言中 比较分别存放在A,B中的两个数的大小,并将大数放入A中,小数放入B中的程序怎么写啊,急用
; 写了个小程序
DATAS SEGMENT
A DB ?
B DB ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AH,01H
INT 21H
MOV A,AL ;从键盘输入一个字符,并存于A中
MOV AH,01H
INT 21H
MOV B,AL ;从键盘输入一个字符,并存于B中
CMP AL,A
JA GOTO1 ;如果B>A 跳转
MOV DL,'A' ;显示A大于B
MOV AH,02
INT 21H
MOV DL,'>'
MOV AH,02H
INT 21H
MOV DL,'B'
MOV AH,02
INT 21H
JMP EXIT
GOTO1:
MOV DL,'B' ;显示B大于A
MOV AH,02
INT 21H
MOV DL,'>'
MOV AH,02H
INT 21H
MOV DL,'A'
MOV AH,02
INT 21H
EXIT:
MOV AH,4CH
INT 21H
CODES ENDS
END START
用cjne进行比较后如果a>=比较的数据cy会被置0,a<被比较的数据cy会被置1,
这里的程序用
mov a,40h
cjne a,41h,l1进行了比较后,在根据cy的值比较大小
CMP:(这边需要给A和B赋值,具体赋什么你看那俩数存哪个寄存器了,存哪个你就直接送过去,简单的赋值语句MOV A,B代表把B的值赋给A)
接下来要这样
MOV 50H,B
CJNE A,50H,REL0(A和B比较是否相等)
AJMP CMP(相等无需交换,跳回循环aaa)
REL0: JNC CMP(如果A大于B也无需交换直接跳回循环bbb)
MOV 50H,A(如果A小于B的话,AB互换值)
MOV A,B
MOV B,50H
AJMP CMP(比较结束,跳回循环ccc)
已上是循环执行的程序,如果需要单次执行将aaabbbccc处的CMP替换为$即可,如果作为函数,CMP后面括号里的内容就不需要进行了,直接CMP:MOV 50H,B,然后将所有的AJMP CMP替换成RET即可,调用时使用LCALL CMP。
int A,B,C;
cin>>A>>B;
if B>=A;
{
C=A;
A=B;
B=C;
}
以上是C++的,如果是C的,只要改个输入的语句就行了