鱼C论坛

 找回密码
 立即注册
查看: 2845|回复: 7

重新整理 实验九 结果显示

[复制链接]
发表于 2012-2-1 21:58:56 | 显示全部楼层 |阅读模式
10鱼币
程序放在cmd和command中执行结果一样,到loop s的时候用p后出现的效果都是每行开头少一个w,如果在loop s指令之前用g指令就不会出现这种情况,就会完整显示。??由于还不能上图,先吧程序放上,在尽量把复制的图上上来吧。。
assume cs:codesg,ds:datasg
datasg segment
db 'welcome to masm!'
datasg ends
codesg segment
start: mov ax,datasg
       mov ds,ax
       mov ax,0b800h
       mov es,ax
       mov bx,0
       mov si,0
       mov cx,16
    s: mov al,[bx]
       mov ah,2h
       mov es:[si+06e0h+0040h],ax
       mov ah,24h
       mov es:[si+0780h+0040h],ax
       mov ah,71h
       mov es:[si+0820h+0040h],ax
       inc bx
    add si,2
    loop s
   
    mov ax,4c00h
    int 21h
   
codesg ends
end   start

这是用g指令的情况:
-r
AX=0000  BX=0000  CX=0045  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=14F7  ES=14F7  SS=1507  CS=1508  IP=0000   NV UP EI PL NZ NA PO NC
1508:0000 B80715        MOV     AX,1507
-g

Program terminated normally
-                               welcome to masm!
                                welcome to masm!
                                welcome to masm!

这是一步步执行到loop s的时候:
-t

AX=7177  BX=0000  CX=0010  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=1507  ES=B800  SS=1507  CS=150elcome to masm! UP EI PL NZ NA PO NC
1508:002A 43                       INC          Belcome to masm!
-t                                                            elcome to masm!

AX=7177  BX=0001  CX=0010  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=1507  ES=B800  SS=1507  CS=1508  IP=002B   NV UP EI PL NZ NA PO NC
1508:002B 83C602             ADD     SI,+02
-t

AX=7177  BX=0001  CX=0010  DX=0000  SP=0000  BP=0000  SI=0002  DI=0000
DS=1507  ES=B800  SS=1507  CS=1508  IP=002E   NV UP EI PL NZ NA PO NC
1508:002E E2E3                 LOOP    0013
-p

AX=7121  BX=0010  CX=0000  DX=0000  SP=0000  BP=0000  SI=0020  DI=0000
DS=1507  ES=B800  SS=1507  CS=1508  IP=0030   NV UP EI PL NZ AC PO NC
1508:0030 B8004C        MOV     AX,4C00

最佳答案

查看完整内容

我认为是这样的:-t或-p命令内部将调用中断,向屏幕显示一些信息。这些信息实在你显示字符串之后显示的,所以有可能覆盖掉你已经显示的部分,至于为什么有的位置被覆盖,有的位置不会被覆盖我也不是很清楚。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-1 21:58:57 | 显示全部楼层
我认为是这样的:-t或-p命令内部将调用中断,向屏幕显示一些信息。这些信息实在你显示字符串之后显示的,所以有可能覆盖掉你已经显示的部分,至于为什么有的位置被覆盖,有的位置不会被覆盖我也不是很清楚。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-2 22:30:13 | 显示全部楼层
恩,自己再慢慢想想,谢谢版主了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-2 22:30:38 | 显示全部楼层

恩,自己再慢慢想想,谢谢版主了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-3 15:07:40 | 显示全部楼层
额,写了个,给你参考参考
assume cs:code,ds:data
data segment
        db 'welcome to masm!'
data ends
code segment
start:        ;多空几个空格和行,还有多定义你会看的明白,这些习惯要养成

        mov ax,data
        mov ds,ax        ;定义数据段
        
        mov ax,0b800h
        mov es,ax        ;定义显存位置
        
        sub bx,bx        ;初始化
        sub si,si        ;si作为数据段内地址,为源变址寄存器
        sub di,di        ;di作为显存地址,为目的变址寄存器
        
        mov cx,3        ;为外循环控制显存行,这里设置3行
next1:
        push di
        push cx                ;保存数据
        push si
        
        mov dl,2        ;这里我就把3行都定义为绿色
        
        mov cx,10h        ;这里设置内循环次数,因为有16字节,所以循环16次
next2:
        mov al,ds:[si]        ;把数据段中的第一字节存放到al中
        mov es:[di],al        ;把数据存放到显存中的0位置,也就是偶字节
        mov es:[di+1],dl        ;把颜色存放到显存的奇字节
        inc si                ;把数据段的偏移地址+1,也就是等于把光标定义到数据段的下一个字节
        add di,2        ;把显存的偏移地址+1,因为要用到2个字节,所以要+2
        loop next2
        
        pop si
        pop cx
        pop di                ;数据还原成原来的样子
        
        add di,0A0h        ;因为显存一行有160个字节,而前面偏移地址为0,现在+0a0h,也就把光标定位到下一行
        loop next1

        mov ax,4c00h
        int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-3 20:53:53 | 显示全部楼层
Push 发表于 2012-2-3 15:07
额,写了个,给你参考参考

朋友,你好,请问你这放上来的是什么啊,怎么弄的啊,教教我好么!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-3 21:03:20 | 显示全部楼层
Push 发表于 2012-2-3 15:07
额,写了个,给你参考参考

呵呵,写的不错,绿色无边啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-4 23:51:32 | 显示全部楼层
每天坚持点点点 发表于 2012-2-3 21:03
呵呵,写的不错,绿色无边啊~

没注意看的你的那个debug调试问题...还以为是程序问题...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 18:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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