2个16位无符号数相加 显示结果(微机的) 急求 !!!!!!!!!!!!

求程序 汇编语言 微机原理的 急求啊!!

第1个回答  2011-01-23
.486
DATA SEGMENT USE16
SUM DB ?,?
MESG DB '25+9='
DB 0,0,'$'
N1 DB 9
N2 DB 25
DATA ENDS

CODE SEGMENT USE16
ASSUME CS:CODE, DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET SUM
MOV AH,N1
MOV AL,N2
ADD AH,AL
MOV BYTE PTR [BX],AH
CALL CHANG
MOV AH,9
MOV DX,OFFSET MESG
INT 21H
MOV AH,4CH
INT 21H
CHANG PROC
LAST: CMP BYTE PTR [BX],10
JC NEXT
SUB BYTE PTR [BX],10
INC BYTE PTR [BX+7]
JMP LAST
NEXT: MOV DL,SUM
ADD BYTE PTR [BX+8],DL
ADD BYTE PTR [BX+7],30H
ADD BYTE PTR [BX+8],30H
RET
CHANG ENDP
CODE ENDS
END BEG

以上是计算9+25的汇编语言程序本回答被提问者采纳
第2个回答  2011-01-08
用C写吧
#include<stdio.h>

void main(){
int a[16],int b[16],c[16];//c[16]中存放得数
int i,pre=0;//pre进位
for(i=0;i<16;i++){
scanf("%d%d",a+i,b+i);
if(a[i]>9||a[i]<0||b[i]>9||b[i]<0) exit(0);
}
for(i=0;i<16;i++){
c[i]=a[i]+b[i]+pr;
if(c[i]>9){
c[i]=c[i]%9;
pr=1;
}
for(i=0;i<16;i++) printf("%d",c[i]);
}本回答被网友采纳
第3个回答  2011-01-08
public double add(int a,int b)
{
double result = a+b;
println(result);
return result;
}

2个16位无符号数相加 显示结果(微机的) 急求 !!!
DATA SEGMENT USE16 SUM DB ?,?MESG DB '25+9='DB 0,0,'$'N1 DB 9 N2 DB 25 DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE, DS:DATA BEG: MOV AX,DATA MOV DS,AX MOV BX,OFFSET SUM MOV AH,N1 MOV AL,N2 ADD AH,AL MOV BYTE PTR [BX],AH CALL CHANG MOV AH,9 MOV DX,...

4个字节无符号数的加法运算 最好能画出流程图,急求,十分感谢
DATA SEGMENT NUM1 DD 12345678H;设定1个32位数作为被加数。加的时候,先加低16位,再加高16位 NUM2 DD 35462790H;设定另1个32位数作为加数。NUM3 DD ?;存32位和 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,NUM1 LEA DI,NUM2 LEA DX,NUM3 ...

相似回答