. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验10 第3题 程序运行正常  有没有优化的地方! 大家怎么作的发出来看一下  [待解决] 回复[ 1次 ]   点击[ 381次 ]  
donggs02
[帖 主]   [ 发表时间:2010-11-23 22:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-04-08 17:43
assume cs:code,ds:data
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
show_str: 
        push dx 
        push cx 
        push ax 
        push si 
        push es 
        push bx 
        mov ax,0b800H 
        mov es,ax 
        mov al,160 
        dec dh 
        mul dh 
        sub dh,dh 
        dec dl 
        add dl,dl 
        add ax,dx 
        mov bx,ax 
        mov dl,cl 
s:      mov ch,0 
        mov cl,[si] 
        jcxz s1 
        mov ch,dl 
        mov es:[bx],cx 
        inc si 
        add bx,2 
        jmp short s 
s1:     pop bx 
        pop es 
        pop si 
        pop ax 
        pop cx 
        pop dx 
        ret 
dtoc:        push cx
        push ax
        push bx
        push dx
        push si
        push di
        sub si,si
        sub di,di
        mov bx,0Ah
d:        sub dx,dx
        div bx
        add dl,30H
        push dx
        inc di
        mov cx,ax
        jcxz d1
        jmp short d
d1:        mov cx,di
d2:        pop dx
        mov [si],dl
        inc si
        loop d2
        mov byte ptr [si],0
        pop si
        pop di
        pop dx
        pop bx
        pop ax
        pop cx
        ret
code ends
end start
ouxmm
[第1楼]   [ 回复时间:2010-12-23 15:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-28 15:59
assume cs:code

data segment
        db 'Welcome to masm!',0
data ends

code segment

start:
        mov ax,data
        mov ds,ax
        mov si,0
        mov dh,2
        mov dl,3
        mov cl,2
        call show_str

        mov ax,4c00h
        int 21h

show_str:
        push dx
        push cx
        push ax
        push es
        push di
        push si

        mov ax,0b800h
        mov es,ax
        mov al,160
        mul dh
        sub ax,160
        mov di,ax
        mov dh,0
        
        mov al,2
        mul dl
        sub ax,2
        add di,ax
        mov ax,cx
        mov cx,0
s:
        mov cl,ds:[si]
        jcxz goBack

        mov es:[di],cl
        mov es:[di+1],al

        inc si
        add di,2
        inc cx
        loop s        

goBack:
        pop si
        pop di
        pop es
        pop ax
        pop cx
        pop dx

        ret

code ends

end start


刚弄出来,头痛欲裂。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved