. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  10.1  [待解决] 回复[ 0次 ]   点击[ 358次 ]  
static
[帖 主]   [ 发表时间:2010-12-30 15:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-06 11:12
;子程序描述
;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
;参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79)
;      (cl)=颜色,ds:si指向字符串的首地址
;返回:五
;应用举例:在屏幕的8行3列,用绿色显示data段中的字符串
assume cs:code,ds:data
data segment
        db 'welcome to masm!',0
data ends

code segment
        start:
        mov dh,10
        mov dl,0
        mov cl,2
        mov ax,data
        mov ds,ax
        mov si,0
        call show_str
        
        mov ax,4c00h
        int 21h
        
        
        ;显示字符串子程序
        show_str:
        push bx
        push ax
        mov ax,0b800h
        mov es,ax
    ;首先计算屏幕显示位置 ax最终表示位置
    mov al,80*2    mul dh
    mov dh,0;dx存放列数
    add ax,dx
    ;准备显示字符串
    ;显示前的处理
    mov al,cl;al存颜色
    mov bx,ax;bx存放显示位置
    ;显示字符串
    s:
    mov ch,ds:[si]
    mov byte ptr es:[bx],ch
    mov byte ptr es:[bx+1],al
    mov cl,0
    inc si
    add bx,2
    jcxz ok
        jmp short s
        ;善后处理
        ok:
        pop bx
        pop ax
        ret
        
        code ends
        end start

有问题:就是屏幕显示位置 老是不对  调不好
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved