. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  请同志们分析下代码有什么问题  [待解决] 回复[ 4次 ]   点击[ 263次 ]  
hya115
[帖 主]   [ 发表时间:2008-06-20 15:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-17 21:09
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
main:mov ax,data
mov ds,ax
mov bx,0
mov ax,0b800h
mov es,ax
mov si,0
mov cx,16
so:mov al,[bx]
mov ah,0cah
mov es:[si] ax
inc bx
inc si
inc si
loop so
mov ax,4c00h
int 21h
code ends
end main
mousecarrot
[第1楼]   [ 回复时间:2008-06-20 22:19 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-06-13 17:02
使用Debug调试运行找问题,自己找出问题才印象深刻
hya115
[第2楼]   [ 回复时间:2008-06-21 10:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-17 21:09
请问第15行的使用有问题吗?编译的时候老是这行出错
duckgaga
[第3楼]   [ 回复时间:2008-06-21 10:44 ]   [引用]   [回复]   [ top ] 
荣誉值:44
信誉值:0
注册日期:2008-04-11 13:33
呵呵,既然提示出错了,就应该仔细找错!我帮楼主测了一下,说到这里,我觉得就不能不小小地批评一下楼主了,楼主应该细心一点,不要犯低级错误。
请看第15行:mov es:[si] ax (这是原文)
------
问题:此行出错
分析错误可能产生的原因:1.mov的用法经典错误:两个内存单元之间直接传送数据,这里有没有?没有……2.传送数据的类型一致否?一致!故不可能是这两种情况,再仔细看看这个语句,你会发现,es:[si]和ax之间少了一个逗号,即正确的应为mov es:[si],ax呵呵,是吧,楼主应该细心一点
至此,问题解决
此外,经常可能遇到的指令可能产生的错误,请参见http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=9499&kindLevel=1&kindId=11525&postId=15798&readSg=1
hya115
[第4楼]   [ 回复时间:2008-06-23 08:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-17 21:09
感谢楼上的同志,非常感谢!
可是程序运行后并没有想要的效果,我对比了论坛的其他程序,觉得逻辑上没有什么问题,能帮我再看看吗,谢了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved