鱼C论坛

 找回密码
 立即注册
查看: 2448|回复: 8

王爽汇编实验10(1)的一个问题

[复制链接]
发表于 2014-6-26 00:16:11 | 显示全部楼层 |阅读模式
1鱼币
我自己编了一下这个实验的第一个程序显示字符串但是有一些问题不知为何,请教一下!
  1. assume cs:codesg,ds:datasg

  2. datasg segment

  3. db 'Welcome to Masm!',0

  4. datasg ends

  5. codesg segment

  6. start:        mov dh,8
  7.                 mov dl,3
  8.                 mov cl,5
  9.                 mov ax,datasg
  10.                 mov ds,ax
  11.                 mov si,0
  12.                 call show_str
  13.                 mov ax,4c00h
  14.                 int 21h
  15.                
  16.                
  17.                
  18.         show_str:
  19.                 mov ax,0B800h
  20.                 mov es,ax       
  21.                 ;计算字符现显示位位置保存在bx中
  22.                 mov al,160
  23.                 mov bx,0
  24.                 mov bl,dh
  25.                 mul bl
  26.                 mov bx,ax
  27.                 mov dh,0
  28.                 add bx,dx
  29.                
  30.         s1:        mov dh,cl ;读入高八位的字符属性       
  31.                 mov ch,0
  32.                 mov cl,ds:[si]  
  33.                 jcxz ok       ;检查是否读到字符串尾
  34.                 mov dl,cl
  35.                 mov es:[bx+di],dl
  36.                 mov es:[bx+di+1],dh
  37.                 inc si
  38.                 add di,2
  39.                 jmp short s1
  40.                
  41.         ok:        ret

  42. codesg ends
  43. end start
复制代码
这是我运行后的界面

这是我运行该代码后的样子

这是我运行该代码后的样子

最佳答案

查看完整内容

第一个箭头指向错了,是上面一句 add dx,dx
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-6-26 00:16:12 | 显示全部楼层
本帖最后由 xiaosawanjava 于 2014-6-26 09:34 编辑

33333333.jpg





第一个箭头指向错了,是上面一句  add dx,dx




小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-6-26 08:58:31 | 显示全部楼层
还是别偷懒 把列数dl*2去掉 如果dl是偶数还行 上面dl是3 奇数就会出错 把 mov ah,dl 改为mov al,2 mul dl
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-6-26 10:48:28 | 显示全部楼层
支持楼上的回答!{:2_27:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-26 17:52:06 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-26 18:13:08 | 显示全部楼层
xiaosawanjava 发表于 2014-6-26 00:16
第一个箭头指向错了,是上面一句  add dx,dx

等等,我还是有点不懂为什么要       ADD DX,DX      
如果不要这一句话的话,那么DX的值是3,就是要3啊,在第四列显示(3)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-6-26 21:10:14 | 显示全部楼层
84561475 发表于 2014-6-26 18:13
等等,我还是有点不懂为什么要       ADD DX,DX      
如果不要这一句话的话,那么DX的值是3,就是要3啊 ...

额,我看错了是第3列,  因为一个字符在显存显示 要占2个字节, 一个是字符的ascii码  一个是字符的属性,也就是颜色那些,  所以 你要在第3列显示  应该是 3*2 等于6 从偏移地址6 开始写入   add dx,dx  相当于 dx*2
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-6-27 02:57:46 | 显示全部楼层
大概知道就行了
等你学32位汇编的时候 够你了解这些东西了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-6-27 03:02:06 | 显示全部楼层
我现在 连xor是嘎哈的也记不起来 但不记得不能说是不会用 不知道的时候再查呗
大概知道就行了 这些算法之类的 以后都用不上 又不是小学生 老是算嘎哈啊  
因为我不记 听一篇教程我会写个笔记
那笔记里面的东西 就都是我自己的
编程面太广了 源码只要你能看懂 那个程序就是你的
多看源码 。。。。我是这么想的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-3 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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