. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  请高手看看程序第5行哪里错了  [已解决] 回复[ 5次 ]   点击[ 323次 ]  
nimingzhe2008
[帖 主]   [ 发表时间:2011-10-16 09:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2011-10-06 22:52
assume cs:aa
aa segment
mov ax,0ffffh
mov ds,ax
mov [6],0ah;第5行
mov ax,[6]
mov dx,0h
mov cx,3
s:add dx,ax
loop s
mov ax,4c00h
int 21h
aa ends
end

masm报错:
53.ASM<5>:error A2056:Immediate mode illegal
hitlerdsaf
[第1楼]   [ 回复时间:2011-10-16 10:38 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2011-09-29 11:23
不能将立即数直接放入内存。
nimingzhe2008
[第2楼]   [ 回复时间:2011-10-16 11:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2011-10-06 22:52
修改了一下,这次是第6行报同样的错
assume cs:aa
aa segment
mov ax,0ffffh
mov ds,ax
mov bl,0ah
mov [6],bl;第6行
mov al,[6]
mov ah,0
mov dx,0
mov cx,3
mov dx,0
s:add dx,ax
loop s
mov ax,4c00h
int 21h
aa ends
end
nimingzhe2008
[第3楼]   [ 回复时间:2011-10-16 11:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2011-10-06 22:52
assume cs:aa 
aa segment 
mov ax,0ffffh 
mov ds,ax 
mov bl,0ah 
mov ds:[6],bl;第6行 
mov al,[6] 
mov ah,0 
mov dx,0 
mov cx,3 
mov dx,0 
s:add dx,ax 
loop s 
mov ax,4c00h 
int 21h 
aa ends 
end
再次修改后,编译通过了。运行结果不对,dx应该为1eh,实际结果却是12h,怎么回事?
tily
[第4楼]   [ 回复时间:2011-10-16 16:56 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:1
注册日期:2011-06-04 00:01
mov al,[6] 编译器会认为你将6送给AL 所以导致结果是12  另外:主板的生产日期存储在内存ffff:0005~ffff:000C处,不能被改变的。你为什么偏偏要用这段内存空间呢?
nimingzhe2008
[第5楼]   [ 回复时间:2011-10-23 14:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2011-10-06 22:52
此贴由 贴主 于 [ 2011-10-23 14:11 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(hitlerdsaf):4分   4楼(tily):4分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved