简单汇编语言(两数相加)

写程序实现数据段中的d1和附加段中的d2相加,结果出入d3中,
d1,d2,d3均为双精度数,其中:d1赋值为99251,d2赋值为 -15962
好像有错误啊,是第二行,描述如下:
masm/j.asm(2):error A2071:initializer magnitude too large for specified size
怎么搞啊?我也能编到这步,就是不会搞这个问题...

补充回答:没有注意那两个数的大小已经超出16位寄存器所能容纳的范围,应该用双字定义、双字相加。已经修改。非常抱歉。

Data segment
d1 DD 99251
Data Ends

Extra segment
d2 DD -15962
d3 DD ?
Extra Ends

Code segment
assume cs:Code,ds:Data,es:Extra

start: mov ax,Data
mov ds,ax
mov ax,Extra
mov es,ax
mov ax,word ptr d1
add ax,word ptr es:d2
mov dx,word ptr d1[2]
adc dx,word ptr es:d2[2]
mov word ptr es:d3,ax
mov word ptr es:d3[2],dx

mov ax,4c00h
int 21h

Code Ends
end start
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-08
两数相加有专门的指令:
ADD op1,op2 op1=op1+op2
ADC op1,op2 op1=op1+op2+cf
第2个回答  2020-03-11
首先要考虑a
b
i
j的数据类型,不同类型的数据占用空间不一样,汇编语言不一样。

汇编语言,两数相加,结果大于10怎么显示十进制
ADD AL,Y DAA ;组合BCD码加法十进制调整指令,调整后,AL+06H=0DH+06H=13H MOV DL,AL MOV AH,2 INT 21H MOV AH,4CH INT 21H END START 加个指令就可以了,DAA,转换一下,如果有不懂的HI我 希望我的回答可以帮到你 ...

汇编语言中ADD和ADDC的区别是什么?
ADD 两数相加,不加进位位。ADDC 两数相加,同时再加个进位位。进位当时为1就加1 为0就加0相当于不加 一般用在多字节数相加中。最低位相加,用ADD ,加完后,可能产生进位,高字节相加就用ADDC 这样,低字节相加产生的进位就会被加进来。比如 0080H + 0180H 低字节相加用 ADD 80H+80H=1...

汇编语言中的加减法
ADD AL,AH;;执行完后CF=1,AL=0EH,但是OEH不溢出,所以OF=0;后面一句也不对吧。)以上是我个人的理解。以下是复制别人的理解:CF 比较简单吧,没有什么特别的.OF 表示的带符号数进行运算是否溢出.96+78,一个是正数,一个为负数,相加肯定是不会有溢出的.OF 溢出只可能发生在两个相同符号的数值...

汇编语言实现键盘输入两个数并向加
LEA DX , NUM2 ;MOV AH , 10 INT 21H; 输入第二个数 MOV AL , NUM1 + 1 MOV AH , 0 MOV SI , AX ; 初始化第一个数 MOV AL , NUM2 + 1 MOV AH , 0 MOV DI , AX ; 初始化第二个数 MOV BX , OFFSET [SUM + 2 + MAX - 1] ; 指向最后一个字节 ...CMP SI , DI...

在单片机汇编语言中c是什么意思
意思是两数相加(ADDC指令)有进位就置C为1,两数减(SUBB指令)有借位就置C为1,上面两种请况C的置1是系统自动的。另外还可以自己对C进行操作 指令如下:MOV C, bit 将bit位地址中的值送PSW中的进位标志位CY MOV bit, C 将PSW中的进位标志位CY的值送bit位地址中 CLR C 将进位标志位CY清0...

用汇编语言将两个两位十进制数相加
Y+1 AAA PUSHF OR AL,30H MOV RE+1,AL POPF MOV AL,0 ADC AL,0 OR AL,30H MOV RE,AL LEA DX,RE MOV

完成AX、BX中两个数相加,汇编语言编程
code segment assume cs:code start:mov ax,123 mov bx,456 add ax,bx ;AX、BX中两个数相加 mov ah,4ch int 21h code ends end start

用汇编语言实现从键盘输入两个2位数并进行相加,最后输出结果
INC DI ;DI加1(指向下一位)LOOP THE_ADD ;循环 MOV SI,DX MOV DI,BP MOV BX,05 TRAN_ASCI: ADD BYTE PTR[SI+BX-1],30H ADD BYTE PTR[DI+BX-1],30H ;使用PTR转换属性并相加,将十六进制数转化为ASCII表示 DEC BX ; BX减1,修改偏移量 JNZ TRAN_ASCI ; 如果BX未减到...

汇编语言 两个有符号数相加10111010和11010011,结果是 (0DH) 溢出...
结果是8DH,而不是0DH,有溢出被舍弃。

汇编 两个有符号数相加 ...求救啊
;数据段:在此处添加程序所需的数据 A DB 2,5;定义A1和A2 B DB -3,4;定义B1和B2 C DW 0;定义存放结果的变量 DSEG ENDS CSEG SEGMENT assume cs:CSEG, ds:DSEG MAIN PROC FAR ;主程序入口 mov ax, dseg mov ds, ax ;此处添加主程序代码 MOV AL,A IMUL B ADD C,AX MOV AL,A...

相似回答