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

如何定义一个8字节数据

whbc 发布于 2010-10-15 22:06, 1038 次点击
我这里有一个题目,实现一段8字节加法程序!我想请教一下大家,怎样定义一个8字节数据?
程序代码:
DSEG SEGMENT
   VAR1 DQ    [1234567890ABBACCH]
   VAR2 DQ    [0EFFF00FFABF0CDEAH]
   VAR3 DQ   [?]
DSEG ENDS
CSEG SEGMENT

 ASSUME CS:CSEG,DS:DSEG

 START:

 MOV AX,DSEG

 MOV DS,AX

 MOV CX,4

 LEA SI,VAR1

 LEA DI,VAR2

 LEA BX,VAR3
AGAIN:

 MOV AX,[SI]

 ADC AX,[DI]

 MOV [BX],AX

 INC SI

 INC SI

 INC DI

 INC DI

 INC BX

 INC BX
LOOP AGAIN
MOV AX,0000H
ADC AX,0000H
MOV [BX],AX
MOV AH,4CH
INT 21H
CSEG ENDS
END START
这里他显示的是有溢出!
4 回复
#2
az98416822010-10-16 11:43
db 定义数据长度BYTE
dw 定义数据长度word
#3
东海一鱼2010-10-16 13:15
DQ 4字,虽然长度是8字节。但数据存储形式与db存储的数字形式是不同的。

按字节定义的话: xxx db  8 dup (?)
#4
whbc2010-10-16 16:09
谢谢了!!
#5
whbc2010-10-16 17:09
我这里定义了一个8字节加法程序,求1234 5678 90AB BACCH和0EFFF 00FF ABF0 CDEAH之和。我是这样写的!
程序代码:
DSEG SEGMENT
   VAR1 DB 0CCH,0BAH,0ABH,90H,78H,56H,34H,12H
   VAR2 DB 0EAH,0CDH,0F0H,0ABH,0FFH,00H,0FFH,0EFH
   VAR3 DB ?
DSEG ENDS
CSEG SEGMENT

 ASSUME CS:CSEG,DS:DSEG

 START:

 MOV AX,DSEG

 MOV DS,AX

 MOV CX,8

 LEA SI,VAR1

 LEA DI,VAR2

 LEA BX,VAR3
AGAIN:

 MOV AX,[SI]

 ADC AX,[DI]

 MOV [BX],AX

 INC SI

 INC DI

 INC BX
LOOP AGAIN
MOV AX,0000H
ADC AX,0000H
MOV [BX],AX
MOV AH,4CH
INT 21H
CSEG ENDS
END START
其中我是这样定义数据的,不知道有没有更好的方法!!
DSEG SEGMENT
   VAR1 DB 0CCH,0BAH,0ABH,90H,78H,56H,34H,12H
   VAR2 DB 0EAH,0CDH,0F0H,0ABH,0FFH,00H,0FFH,0EFH

各位说说自己的看法吧!!
1