verycdnet 发表于 2016-12-12 10:29:46

撸了一下午,把实验10_3撸出来了,我这逻辑太差!

assume cs:code

data segment
        db 10 dup (0)
data ends

code segment
start:
        mov ax,12666
        mov bx,data
        mov ds,bx
        mov si,0
        call dtoc
       
        mov dh,8
        mov dl,3
        mov cl,2
        call show_str
       
        mov ax,4c00h
        int 21h
       
dtoc:                                                ;这段就是取余然后把转好的ASCII码放到数据段中,我放的方向是反的
s:       
        mov cx,10
        mov dx,0
        div cx
        add dx,30h
        mov ds:,dx
        mov cx,ax
        jcxz ok
        inc si
        jmp short s
ok:        ret

show_str:
        mov ax,0B800H
        mov es,ax
        mov di,1283
        mov ch,0
        mov si,4                                        ;由于前面是反方向放的,所以我从最后的一个偏移地址开始取字符,然后递减
s1:
        mov cl,2
        mov ch,ds:
        mov es:,cl
        mov es:,ch
        mov cl,0
        jcxz ok1
        dec si
        add di,2
        jmp short s1
ok1:ret       
code ends
end start

我写程序想法都挺简单的,没有那么多复杂的逻辑,大家多提意见啊,您的回复就是我进步的动力!

zealstar 发表于 2016-12-12 19:59:11

{:10_266:}{:10_266:}
这实验有坑,先坑你2个子程序,然后再坑你大的,然后问题来了,各种寄存器抢着用啊……

恭喜撸出来了……{:10_247:}
页: [1]
查看完整版本: 撸了一下午,把实验10_3撸出来了,我这逻辑太差!