汇编求和实验

来源:互联网 发布:icmp.dll被java嗲用 编辑:程序博客网 时间:2024/04/30 19:09


设在A、B和D字单元中分别存放着三个数。若三个数都不是0,则求出三个数的和并存放在S单元中;若其中有一个数为0,则把其他两个单元也清零。

如有错误,请各位大神指导!!!

代码如下:


DATAS SEGMENT

    a dw 1
    b dw 2
    d dw 6
    count dw ($-a)/2
    tip db 'the number:',0ah,0dh,'$'
    tip1 db 0ah,0dh,'$'
    
    ;此处输入数据段代码  
DATAS ENDS


STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS


CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    lea dx,tip
    mov ah,9
    int 21h
    lea si,a
    
    mov cx,count
lop2:
    mov ah,2
    mov dl,[si]
    add si,2
    add dl,30h
    int 21h
    jmp lop1   
lop1:
    mov dl,' '
    mov ah,2
    int 21h
    loop lop2
    
    
    
    mov ax,0
    mov bx,0
    mov cx,count
    sub si,2
lop3:
    cmp [si],bx
    jz lop4
    add ax,[si]
    sub si,2
    loop lop3
    jmp lop6 
lop4:
   mov cx,4h
   lea si,a
lop5:
   mov [si],bx
   push [si]
   add si,2
   dec cx
   cmp cx,0
   jz exit
   jmp lop5
 
exit:
   mov ah,2
   pop [si]
   inc cx
   mov dl,[si]
   add dl,30h
   int  21h
   cmp cx,3d
   jz exit1
   jmp exit   
   
lop6:
   
   mov ah,9
   lea dx,tip1
   int 21h
   
   mov ah,0
   mov ah,2
   mov dl,al
   add dl,30h
   int 21h   
   
exit1:  
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
0 0