鱼C论坛

 找回密码
 立即注册
查看: 3959|回复: 3

在屏幕第8行,3列

[复制链接]
发表于 2011-5-4 01:28:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 fishz 于 2011-5-5 12:32 编辑

王爽实验10,编写显示字符串子程序
(dh)=行号,取值范围0~24
(dl)=列号,取值范围0~79
(cl)=颜色,ds:si指向字符串的首地址
例子:在屏幕第8行,3列,用绿色显示data段中的字符串
assume ds:data,  cs:code,  ss:stack

data segment 
            db 'Welcome to masm!', 0        ;words
color        db 02h, 24h, 71h                ;three colors
data ends

stack segment
        dw 8 dup(0)
stack ends 

code segment
start:
        mov ax, data
        mov ds, ax
        
        mov ax, stack
        mov ss, ax
        
        mov dh, 8
        mov dl, 3
        mov cl, 2
        mov si, 0
        
        call show_str                   ;show_str函数
        
        mov ax, 4c00h
        int 21h
        
show_str:
        push bx
        push si
        push di
        push es
        push ax
        push cx
        
        mov bl, cl                      ;bl记录颜色
        
        mov al, 0ah                    ;显存每一行的像素数量/10 本来是a0,作为段地址时要除于10
        mov ah, 0
        dec dh
        mul dh                          ;第dh行
        
        ;mov dh, 2
        ;mul dh                          ;????
        
        add ax, 0b800h                  ;显存初地址
        ;dec dl
        ;adc al, dl                      ;第dl列
        ;adc ah, 0
        mov es, ax                     ;显存段地址
        
        dec dl
        mov al, dl
        mov ah, 0
        mov dl, 2
        mul dl                          ;没列占两个字节的空间,因为还有颜色的内存
        mov di, ax                      ;第dh行,第dl列
        
display:
        mov cl, [si]
        mov ch, 0
        jcxz ok
        mov al, ds:[si]
        mov es:[di], al
        inc di
        ;pop cx                          ;pop颜色
        mov es:[di], bl
        inc si
        inc di
        jmp short display
        
ok:
        pop cx
        pop ax
        pop es
        pop di
        pop si
        pop bx
        
        ret
code ends

end start 
为什么我的是在对话框的第四行显示的???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-4 22:36:15 | 显示全部楼层
呃..显示一个字符串而已,用汇编这么复杂呃.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-5 12:07:34 | 显示全部楼层
编译  测试 楼主的源码,我这里正常显示的。  你是在什么环境下调试的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-5 12:31:22 | 显示全部楼层
嗯,可能是运行环境的问题,之前我是在win7的debug下编译运行的。
现在我装了个VM虚拟机,在XP下运行就正确了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 20:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表