回 帖 发 新 帖 刷新版面

主题:达人帮我好吗?关于“打印完全数”

这是我自己写的:
data segment
n dw 1000
m dw 1000 dup(?),'$'
data ends
code segment
     assume cs:code,ds:data
start: mov ax,data
       mov ds,ax
       mov bx,1
lg4:   mov cx,0
       mov dl,1
lg2:   mov ax,bx
       div dl
       cmp ah,0
       jnz lg1
       add cx,dx
lg1:   inc dl
       cmp bx%2,dx
       jge lg2
       cmp cx,bx
       jnz lg3
       mov m,bx
       mov dx,m
       mov ah,9
       int 21h
lg3:   inc bx
       dec n
       cmp n,0
       jge lg4
       mov ah,4ch
       int 21h
code ends
     end start
  可是我知道我在输出符合要求的数的时候写错了
  我当时想的是把那个数当作字符串来,所以我定义了m,想把那个数当作字符串放进m里输出,可是事实证明偶是错的。。汗一个。。。后来发现应该把那个数移位,再一位位的用ASCII输出,可是我就不会了。。。。哥哥姐姐能不能帮我把那里的输出写了。。。
  小孩子偶刚来,人生地不熟,大家帮帮我可以吗?!
  急啊!!!
[em10]

回复列表 (共3个回复)

沙发

自己顶起
一定要等到帮偶的人 5555~~~

板凳

没有人吗
伤心死了~~~
呼唤高手来~

3 楼

输出子程序请参考:

data segment
disp db 'l1:'
dat db '0000','H$'
data ends

;。。。。。。中间代码省略

              mov ax,n  ;调用子程序,6行
              lea bx,dat
              CALL     done
              lea dx,disp
              mov ah,09h
              int 21h

;。。。。。。中间代码省略

done proc near   ;子程序
    mov ch,4
    mov cl,4
  done1:
    rol ax,cl
    mov dx,ax
    and dx,0fh
    add dl,30h
    cmp dl,39h
    jle store
    add dl,07h
  store:
    mov [bx],dl
    inc bx
    dec ch
    jnz done1
    ret
done endp








我来回复

您尚未登录,请登录后再回复。点此登录或注册