. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
主题 : :  实验10.1显示字符串  [待解决] 回复[ 2次 ]   点击[ 263次 ]  
wrsg
[帖 主] [ 发表时间:2019-08-24 13:05 ] 
荣誉值:0
信誉值:0
注册日期:2010-11-21 12:54
assume  cs:codesg,ds:datasg,ss:stack

datasg segment
        db 'welcom to masm!',0
datasg ends

stack segment
        dw 10 dup (0)
stack ends

codesg segment
start:                     mov dh,23
                        mov dl,48
                        mov cl,2
                
                        mov ax,datasg
                        mov ds,ax
                        mov ax,stack
                        mov ss,ax
                        mov sp,16
                        mov si,0
                        call show_str
                
                        mov ax,4c00h
                        int 21h


  show_str:        push ax
                        push bx 
                        push cx
                        push si
                        push di
                                                
                        mov ax,0b800h
                        mov es,ax
                        mov bl,cl                ;存放字体颜色
                        
                        mov al,160
                        dec dh
                        mul dh                        ;乘法结果为ax
                        mov dh,0
                        add dl,dl
                        add ax,dx                ;ax 为行+列位置
                        mov di,ax       ;显示屏位置
                        
                        mov ah,bl                ;设置字体颜色al
        change: mov ch,0
                        mov cl,[si]
                        jcxz ok          ;遇到0结束
                        mov al,ds:[si]
                        
                        mov es:[di],ax
                        inc si
                        add di,2
                        
                        jmp short change
                
        ok:                pop di
                        pop si
                        pop cx
                        pop bx
                        pop ax
                        ret
                        
codesg ends
end start
wrsg
[第1楼] [ 回复时间:2019-08-24 13:15 ] 
荣誉值:0
信誉值:0
注册日期:2010-11-21 12:54
测试通过
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved