汇编 求两组数据对应位置上的数绝对值之和

来源:百度知道 编辑:UC知道 时间:2024/09/28 08:41:58
定义了两组数据DB1,DB2,把两组数据的对应位置上的数先判断是否是正数,不是正数求绝对值,然后求和,把结果存放在SUM开始的另一个空间
期末考试题,大家帮帮忙啊,元旦后考试了

;请在 debug 里测试本程序
DATAS SEGMENT
ary1 db 1,-2,3,-4,5,6,7,-8,9,"$"
ary2 db -1,2,-3,4,5,-6,7,8,-9,"$"
sum dw 20 dup(?) ;和可能会大于 255
DATAS ENDS

STACKS SEGMENT
db 64 dup(?)
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX

lea si,ary1
lea di,ary2
lea bx,sum ;指向sum
@1: cmp byte ptr [si],"$" ;比完了没?
jz bye ;比完了
cmp byte ptr[si],0
jg @2
neg byte ptr[si] ;取绝对值
@2: cmp byte ptr[di],0
jg @3
neg byte ptr[di]
@3: mov al,byte ptr[si]
cbw ;把al转换成双字节
xchg dx,ax
mov al,byte ptr[di]
cbw
add ax,dx
mov word ptr [bx],ax ;写入sum
inc si ;指向下一个数据
inc di
add bx,2
jmp @1

bye:int 3h

;MOV AH,4CH
;INT 21H