鱼C论坛

 找回密码
 立即注册
查看: 1510|回复: 2

实验9求解!!!求助!!!

[复制链接]
发表于 2014-4-23 22:10:18 | 显示全部楼层 |阅读模式

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

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

x
看小甲鱼的视频到实验9那里,有点不懂,于是按视频上小甲鱼的源码一点一点打了出来。。。结果编译出来效果不一样,不能实现视频里那样彩色的字。。。而是一闪而过。。是不是哪里打错了?实在找不到错在哪里了。。。求解,代码放在1楼!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-23 22:11:35 | 显示全部楼层
              ASSUME    CS:CODE,DS:DATA,SS:STACK
        DATA  SEGMENT
              DB        'wlcome to masm!'
              DB        02H,24H,71H
        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       SP,10H

              XOR       BX,BX       ;相当于mov bx,0  BX清零 用来索引颜色
              MOV       AX,0B872H   ;算出屏幕第12行中间的显存的段起始位置放入ax中

              MOV       CX,3
         S3:                        ;S3循环控制行数,外循环为3次,因为要显示三个字符串
              PUSH      CX          ;三个进栈操作为外循环S3保存相关寄存器的值
              PUSH      AX          ;以防止它人的值在内循环中被破坏
              PUSH      BX
            
              MOV       ES,AX       ;此时ex为屏幕第12行中间的显存的段的起始位置

              MOV       SI,0        ;si用来索引代码列的字符
              MOV       DI,0        ;di用来定位目标列

              MOV       CX,10H
              ;S1循环控制存放的字符,内循环为10次,因为一个字符串中含有10H个字
         S1:
              MOV       AL,DS:[SI]
              MOV       CS:[DI],AL
              INC       SI
              ADD       DI,2        ;此循环实现偶地址中存放字符

              MOV       DI,1        ;di的值设为1,从而为在显存奇地址中存放字符颜色做准备
              POP       BX
              MOV       AL,DS:10[BX]            ;取颜色属性
              INC       BX


              MOV       CX,10H      ;第二个内循环也为10H次
         S2:
              MOV       ES:[DI],AL
              ADD       DI,2
              LOOP      S2          ;此循环实现奇地址中存放字符的颜色属性

                                    ;以下4句为下一趟外循环做准备
              POP       AX
              ADD       AX,0AH      ;将显存的段起始地址设为当前行的下一行
                                    ;[在段地址中加0ah,相当于在偏移地址中加了0a0h=160d]
              POP       CX
              LOOP      S3

              MOV       AX,4C00H
              INT       21H
        CODE  ENDS
              END       START
                  
               
                           
              
                    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-24 14:16:18 | 显示全部楼层
我也遇到了这个问题,我用debug然后用g命令就可以显示出来。但是我也不知道直接运行部显示是什么原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 02:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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