. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  被第九章的实验郁闷了,不明白哪里有错,请高手指教(附我的源代码)  [已解决] 回复[ 7次 ]   点击[ 302次 ]  
outlaw
[帖 主]   [ 发表时间:2008-07-10 21:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2008-06-07 10:57
错误提示:第九行,symbol not defined:B800H

代码如下:
assume cs:codesg,ds:data
data segment
   db 'welcome to masm!'
data ends
codesg segment
   start: mov ax,data
          mov ds,ax
          mov di,0
          mov ax,b800h
          mov es,ax
          mov si,07c0h
          mov sp,16
          mov cx,12

      s1: mov ax,0
          mov al,ds:[di]
          mov es:[si],al
          mov byte ptr es:[si+1],02h
          add si,2
          inc di
          loop s1

          mov cx,12
          mov si,07c0h
          mov di,0

      s2: mov ax,0
          mov al,ds:[di]
          mov es:[si+160],al
          mov byte ptr es:[si+161],64h
          add si,2
          inc di
          loop s2

          mov cx,12
          mov di,0
          mov si,07c0h

      s3: mov ax,0
          mov al,ds:[di]
          mov es:[si+320],al
          mov byte ptr es:[si+321],71h
          add si,2
          inc di
          loop s3

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

请指教
outlaw
[第1楼]   [ 回复时间:2008-07-10 21:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2008-06-07 10:57
将b800用十进制47104表示后程序编译通过

并且运行后按题目要求显示了welcome to ma,但缺少了"sm!"这三个字符。
outlaw
[第2楼]   [ 回复时间:2008-07-10 21:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2008-06-07 10:57
我明白错在哪里了,忘记加0了,不好意思。。。
outlaw
[第3楼]   [ 回复时间:2008-07-10 21:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2008-06-07 10:57
其中cx由于写程序的时候笔误写成了12,应该是16的,好了,问题解决。

那么请大家讨论下我的代码吧,我觉得算法很繁琐,并且只能在改动字体行数不多的情况下用,如果需要更改的行数多,那么这样一行行写就太麻烦了,肯定还是要用循环和转移这样的方法的,但我对这个还没想太明白,请大家讲讲自己的算法。
flash_ps
[第4楼]   [ 回复时间:2008-07-10 22:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-14 17:52
可以只要一个循环体就可了。这个循环中分三部分,为不同的行和不同的显示颜色。可以用[bx+data],要算好每行的data. 想一下这个。
outlaw
[第5楼]   [ 回复时间:2008-07-10 22:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2008-06-07 10:57
嗯,看到有同学用栈来存颜色的数据,我觉得很好,这样用两个循环嵌套一下就可以了。
另看到有同学用jcxp转移,也不错,不过觉得不如用栈来的清晰。
outlaw
[第6楼]   [ 回复时间:2008-07-14 11:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2008-06-07 10:57
回复:[第4楼]
------------------
这样写的话更麻烦,用【bx+data】要写处理16个字节的数据,这里用循环更合适。
outlaw
[第7楼]   [ 回复时间:2008-07-19 12:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2008-06-07 10:57
此贴由 贴主 于 [ 2008-07-19 12:20 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved