帮我看看下面那个代码错了
assume cs:zhuzhu segment
start: mov bx,1000h
mov ds,bx
mov ax,1111h
mov ,ax
mov ax,0
mov cx,10h
peng:add ax,
loop peng
mov ax,4c00h
int 21h
zhu ends
end start
pa.asm(7) : error A2001:
H代表十六进制,你这个mov ax,1111h太大拉。mov ,ax;add ax,这两句好像不对吧 第 7 行的 mov ,ax 应该改为 mov ds:,ax。 和在debug 里不同,编译器看 是直接把它当常数看的,所以mov ax, 编译后变成了 mov ax,0 ,而不是mov ax,ds:.
但 编译后还是ds:。
所以为什么编译器会报错就很明白了。 笨蛋侦探 发表于 2012-3-8 14:01 static/image/common/back.gif
第 7 行的 mov ,ax 应该改为 mov ds:,ax。 和在debug 里不同,编译器看是直接把它当常数看的,所以 ...
知道了,谢谢了 侦探说的是正确的。
debug中 可以这样用,但是masm不会认的,必须加上segment。
你这个程序还有个问题:1111H, 16次累加会超过ax的表示范围,ax最大表示0FFFFH.
所以你这个程序中用来累加的话,需要用到eax。 eax是32bit的寄存器
页:
[1]