|
主题 : : 恳请大家指出程序的错误 [待解决] |
回复[ 9次 ]
点击[ 801次 ] | |
|
|
|
|
[帖 主]
[ 发表时间: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 | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-04-14 19:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:45
信誉值:0
注册日期:2007-05-05 09:01 |
楼主看一下,第5章的内容(P102页,5.4节的内容)就明白了! | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-04-14 19:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-04-10 19:47 |
|
|
|
|
|
[第3楼]
[ 回复时间:2008-05-13 21:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:0
注册日期:2008-03-27 16:25 |
ax是字,而[2]应该是一个字节吧,这不是操作数类型不匹配吗?改成word ptr 【2】试试 | | |
|
|
|
|
[第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 | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-08-14 09:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-13 04:35 |
|
|
|
|
|
[第6楼]
[ 回复时间:2008-08-21 13:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:2
注册日期:2007-08-20 03:11 |
immediate operand not allowed:不允许立即数寻址
其实错误信息都看得出来,不巧的是,很多程序员都不爱看错误信息 | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-09-10 09:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:8
信誉值:2
注册日期:2008-09-04 17:29 |
immediate operand not allowed:不允许立即数寻址
其实错误信息都看得出来,不巧的是,很多程序员都不爱看错误信息
------------------
回复:你错了,不看错误信息的那根本不是程序员。 | | |
|
|
|
|
[第8楼]
[ 回复时间:2008-09-10 15:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
mov ds:[2], ax 这样还不对吧?
改成mov word ptr [2],ax 才对噶?LZ 试下,回来告诉我们^-^ | | |
|
|
|
|
[第9楼]
[ 回复时间:2008-09-10 16:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
|