撸了一下午,把实验10_3撸出来了,我这逻辑太差!
assume cs:codedata 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
我写程序想法都挺简单的,没有那么多复杂的逻辑,大家多提意见啊,您的回复就是我进步的动力! {:10_266:}{:10_266:}
这实验有坑,先坑你2个子程序,然后再坑你大的,然后问题来了,各种寄存器抢着用啊……
恭喜撸出来了……{:10_247:}
页:
[1]