汇编语言中 比较分别存放在A,B中的两个数的大小,并将大数放入A中,小数放入B中的程序怎么写啊,急用

作者&投稿:老良 (若有异议请与网页底部的电邮联系)
在汇编语言中从键盘输入两个字符存于A,B单元中,并比较它们的大小,在屏幕上显示:A>B或B>A.~

; 写了个小程序
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的值比较大小

需要借助一个中间寄存器,随便用一个,比如50H
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的,只要改个输入的语句就行了