汇编程序,要求将数字1到10依次相加并输出结果

来源:百度知道 编辑:UC知道 时间:2024/06/09 05:44:05
DSEG SEGMENT 'DATA'
; add your data here!

DSEG ENDS

SSEG SEGMENT STACK 'STACK'
db 256 DUP(0)
SSEG ENDS

CSEG SEGMENT 'CODE'
START PROC FAR
; set segment registers:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
mov ax, sseg
mov ss, ax

; add your code here
mov cx,14
mov ax,0
mov bx,1
haha:
add ax,bx
inc bx
loop haha

mov si,0
mov di,10
heihei:
mov dx,0
div di
test dx,0ffffh
jz lala
push dx
inc si
jmp heihei

lala:
mov cx,si
mov ah,2
kaka:
pop dx
add dl,30h
int 21h
loop kaka

MOV AX, 4C00h ; exi

分离数位,你给的判断结束条件是:test dx,0ffffh,即(dx,ax)除以10的余数dx为0ffffh。不合理,因为比如55/10=5...5;5/10=0...5;0/10=0...0,无论如何,你是得不到dx为0ffffh这一结束条件,“55可以正常的输出来”有点不可思议。我建议把判断结束条件改为:test ax,#0。

mov si,0
mov di,10
heihei:
mov dx,0
div di
test dx,0ffffh
jz lala
push dx
inc si
jmp heihei
改为:
mov si,#1
mov di,#10
heihei:
mov dx,#0
div di
push dx
test ax,#0
jz lala
inc si
jmp heihei