鱼C论坛

 找回密码
 立即注册
查看: 2869|回复: 6

实验9

[复制链接]
发表于 2012-3-14 13:01:13 | 显示全部楼层 |阅读模式

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

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

x
问什么我写出来的代码显示不出‘wlcome tomasm’?
求大神指点
assume cs:qq,ds:yy,ss:kk
yy segment
db 'wlcome to masm!.'
db 02h,24h,72h
yy endS

kk segment
db 16 dup (0)
kk ends 

qq segment
start:
mov ax,yy
mov ds,ax
mov ax,kk
mov ss,ax
mov sp,16
MOV AX,0200h
mov es,ax

mov si,0       ;单词
mov di,17     ; 颜色
mov bx,0   ;换行
mov cx,3   ;
mov bp,0
s:
push cx
mov cx,16
s1:
mov al,ds:[bp]
mov es:[si+bx],al
inc si
mov ah,ds:[di]
mov es:[si+bx],ah
inc si
inc bp
loop s1

add bx,32
mov si,0
inc di
MOV BP,0
pop cx
 
LOOP s

mov ax,4c00h
int 21
qq ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-14 14:15:03 | 显示全部楼层
基本没错,细节上有问题,显示内存的段地址是B800,一行是160个字节
assume cs:qq,ds:yy,ss:kk

yy segment
    db 'welcome to masm!'
    db 02h,24h,72h
yy ends

kk segment
    db 16 dup (0)
kk ends

qq segment
    start: mov ax,yy
           mov ds,ax

           mov ax,kk
           mov ss,ax
           mov sp,16

           mov ax,0b800h
           mov es,ax

           mov si,0
           mov di,10h
           mov bx,12*160+36h*2
           mov cx,3
           mov bp,0
        s: push cx
           mov cx,16
       s1: mov al,ds:[bp]
           mov es:[si+bx],al
           inc si
           mov ah,ds:[di]
           mov es:[si+bx],ah
           inc si
           inc bp
           loop s1

           add bx,160
           mov si,0
           inc di
           mov bp,0
           pop cx
           loop s

           mov ax,4c00h
           int 21h
qq ends
end start


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-14 14:48:07 | 显示全部楼层
本帖最后由 ︵ゞ痴.想 于 2012-3-14 19:08 编辑

编译过了  可以正常显示出代码在下面。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-14 19:00:35 | 显示全部楼层
              ASSUME    CS:QQ,DS:YY,SS:KK
          YY  SEGMENT
              DB        'welcome to masm!'    //这里你就打错了。。。
              DB        02H,24H,72H
          YY  ENDS

          KK  SEGMENT
              DB        16 DUP (0)
          KK  ENDS

        QQ  SEGMENT
      START:
              MOV       AX,YY
              MOV       DS,AX
              MOV       AX,KK
              MOV       SS,AX
              MOV       SP,16
              MOV       AX,0B800H     //这个显存位置你也错了
              MOV       ES,AX

              MOV       SI,0        ;单词
              MOV       DI,16       ; 颜色
              MOV       BX,0        ;换行
              MOV       CX,3        ;
              MOV       BP,0
          S:
              PUSH      CX
              MOV       CX,16
         S1:
              MOV       AL,DS:[BP]
              MOV       ES:[SI+BX].1824,AL           //你没换行  会出显在第一行
              INC       SI
              MOV       AH,DS:[DI]
              MOV       ES:[SI+BX+1824],AH
              INC       SI
              INC       BP
              LOOP      S1

              add       SI,128
              INC       DI
              MOV       BP,0
              POP       CX

              LOOP      S

              MOV       AX,4C00H
              INT       21
        QQ  ENDS
              END       START

请使用DOSbox 运行   不然会报错。。。 我也不知道是为什么。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-14 20:08:21 | 显示全部楼层

不知道为什么你的代码运行了几次后显示不了‘wlcome to masm!为什么呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-14 20:41:51 | 显示全部楼层
we6540 发表于 2012-3-14 20:08
不知道为什么你的代码运行了几次后显示不了‘wlcome to masm!为什么呢

我的电脑可以正常显示,编译连接以后有什么提示么?还是编译连接后,运行不显示文字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-14 20:43:05 | 显示全部楼层
程序还是自己打一遍,直接复制容易受影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 22:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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