. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  恳请大家指出程序的错误  [待解决] 回复[ 9次 ]   点击[ 801次 ]  
wang_weihan
[帖 主]   [ 发表时间:2008-04-14 17:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-10 19:47
assume cs : codesg

codesg segment
    mov ax, 0001H
    mov ds, ax
    mov [2], ax
    
    mov ax, 4c00H
    int 21H
codesg ends

end
错误出现在"mov [2], ax”,具体消息如下:
error A2001: immediate operand not allowed
xiaochong
[第1楼]   [ 回复时间:2008-04-14 19:03 ]   [引用]   [回复]   [ top ] 
荣誉值:45
信誉值:0
注册日期:2007-05-05 09:01
楼主看一下,第5章的内容(P102页,5.4节的内容)就明白了!
wang_weihan
[第2楼]   [ 回复时间:2008-04-14 19:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-10 19:47
我书看的太不仔细了!!!
jnwz159
[第3楼]   [ 回复时间:2008-05-13 21:05 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:0
注册日期:2008-03-27 16:25
ax是字,而[2]应该是一个字节吧,这不是操作数类型不匹配吗?改成word ptr 【2】试试
mess
[第4楼]   [ 回复时间:2008-05-14 09:26 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
Immediate mode illegal不合法的立即数寻址方式.

mov [2], ax 
----
这样写[2]代表的不是一个内存单元,而被编译器解析成了立即数2,应如下
mov ds:[2], ax
revenge
[第5楼]   [ 回复时间:2008-08-14 09:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-13 04:35
立即数不能用于目的操作数
kawaguchi
[第6楼]   [ 回复时间:2008-08-21 13:55 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2007-08-20 03:11
immediate operand not allowed:不允许立即数寻址

其实错误信息都看得出来,不巧的是,很多程序员都不爱看错误信息
ai_cr
[第7楼]   [ 回复时间:2008-09-10 09:46 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:2
注册日期:2008-09-04 17:29
immediate operand not allowed:不允许立即数寻址

其实错误信息都看得出来,不巧的是,很多程序员都不爱看错误信息
------------------
回复:你错了,不看错误信息的那根本不是程序员。
e56004474
[第8楼]   [ 回复时间:2008-09-10 15:59 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35
mov ds:[2], ax  这样还不对吧?
改成mov word ptr [2],ax 才对噶?LZ 试下,回来告诉我们^-^
e56004474
[第9楼]   [ 回复时间:2008-09-10 16:53 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35
P102页,5.4节的内容
看了,明白,谢谢
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved