鱼C论坛

 找回密码
 立即注册
查看: 4283|回复: 10

[已解决]关于P188实验九的问题求助

[复制链接]
发表于 2020-5-15 00:06:13 | 显示全部楼层 |阅读模式

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

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

x
代码先给上:

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
       
                mov bx,0
                mov cx,16
                mov ah,02H
       
        s:        mov al,ds:[bx]
                mov es:[bx],al
                mov es:[bx+1],ah
                inc bx
                inc bx
                loop s
       
                mov ax,4C00H
                int 21H
       
code ends

end        start

运行完后ES:0000内存如下!
为什么会这样?大佬们指点一下
最佳答案
2020-5-15 10:53:39
s:  
    mov al,ds:[bx]
    mov es:[bx],al
    mov es:[bx+1],ah
    inc bx
    inc bx
将你程序中上面的改为下面的就对了:
   mov bp,1610
s:
  mov al,ds:[bx]
  mov es:[bp],al
  mov es:[bp+1],ah
  inc bx
  add bp,2
666.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 00:44:01 | 显示全部楼层
es指向显存,显存中的内容在任何时刻都和屏幕上的东西一一对应
屏幕上有什么,显存中的内容就是什么
显存中的内容和屏幕上的内容一一对应
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 02:58:01 | 显示全部楼层
人造人 发表于 2020-5-15 00:44
es指向显存,显存中的内容在任何时刻都和屏幕上的东西一一对应
屏幕上有什么,显存中的内容就是什么
显存 ...

但是我给出的这串代码...是为了在屏幕上显示出“welcome to masm!”的绿色字体呀!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 10:53:39 | 显示全部楼层    本楼为最佳答案   
s:  
    mov al,ds:[bx]
    mov es:[bx],al
    mov es:[bx+1],ah
    inc bx
    inc bx
将你程序中上面的改为下面的就对了:
   mov bp,1610
s:
  mov al,ds:[bx]
  mov es:[bp],al
  mov es:[bp+1],ah
  inc bx
  add bp,2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 15:12:05 From FishC Mobile | 显示全部楼层
xie1234abc 发表于 2020-5-15 10:53
s:  
    mov al,ds:
    mov es:,al

能解释下吗?能学到这里谁都不是想敷衍了事蒙混过关的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 18:15:44 | 显示全部楼层
首先你的代码就是错误的,所以也就没有必要再说什么.根据作业要求来写代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 22:50:51 | 显示全部楼层
yjcoke 发表于 2020-5-15 18:15
首先你的代码就是错误的,所以也就没有必要再说什么.根据作业要求来写代码

请问我的代码不是为了实现作业要求?说代码错的您也不指出错在哪?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 22:55:50 | 显示全部楼层
Loser_YiMo 发表于 2020-5-15 22:50
请问我的代码不是为了实现作业要求?说代码错的您也不指出错在哪?

你是如何查看显存中的内容的?通过把显存中的内容输出到屏幕?
我不是说过了吗,显存中的内容和屏幕上的内容一一对应

你怎么能通过把显存中的内容输出到屏幕,这种方法来查看显存中的内容呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 23:23:09 | 显示全部楼层
本帖最后由 xie1234abc 于 2020-5-15 23:33 编辑

inc bx
inc bx

'welcome to masm!'
自加两次后,W读了,就读到  L  上去了,读不到中间的  e
读出来的将是“Wloet a…………”
正确改法:

s:  mov al,ds:[bx]
    mov es:[bx],al
    mov es:[bx+1],ah
    inc bx
    inc bx
将你程序中上面的改为下面的就对了:
   mov bp,1610
s: mov al,ds:[bx]
  mov es:[bp],al
  mov es:[bp+1],ah
  inc bx                         ;bx只自加一次
  add bp,2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 10:57:52 | 显示全部楼层
Loser_YiMo 发表于 2020-5-15 22:50
请问我的代码不是为了实现作业要求?说代码错的您也不指出错在哪?

如果我没有记错的话,这道题目的要求是 将wel的欢迎语句显示在屏幕的中间,显示三行,另外每行配上对应的颜色.
所以你看你的代码,颜色属性只有一个.然后起始位置还是0..屏幕的尺寸是25*80  所以以行为中间应该是从12行开始.以列为中间,应该是11*160然后再加上第12行的中间距离..大概就是这个意思.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-13 05:06:43 | 显示全部楼层
本帖最后由 boling 于 2021-10-13 05:08 编辑

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
               
                               
                mov bx,0
                mov cx,16
                mov ah,02H   ;颜色值
                mov bp,2000  ;这个值是为了在屏幕中间显示
      
        s:      mov al,ds:[bx]
                mov es:[bp],al
                mov es:[bp+1],ah
                inc bx
                add bp,2
                loop s
      
                mov ax,4C00H
                int 21H
      
code ends

end        start

刚刚测试一下,这样就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 05:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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