帮忙看下那点错了
assume cs:codesg,ds:datasg,ss:stacksgstacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display......'
db '2. brows........'
db '3. replace......'
db '4. modify.......'
datasg ends
codesg segment
start:mov ax,stacksg
mov ss,ax
mov sp,16
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0: push cx
mov si,0
mov cx,4
s:mov al,
and al,11011111b
mov ,al
inc si
loop s
add bx,16
pop cx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
提示25 27有一些错误就是s:mov al,
and al,11011111b
mov ,al
MS,没问题啊,刚试编译了一下还真不行,将BX直接置3去掉那里面的常量3就通过了,或者把AL直接换成AX
难道8位寄存器不能用两个寄存器加一个常量来索引地址?
高手们解答 在我的MASM5.0上无问题,直接编译成功
试下调整下顺序mov ,al 陌路狂奔 发表于 2011-5-31 22:43 static/image/common/back.gif
MS,没问题啊,刚试编译了一下还真不行,将BX直接置3去掉那里面的常量3就通过了,或者把AL直接换成AX
难道 ...
我按照教程上的来打的啊 按常理说 应该能通过的 winddyj 发表于 2011-5-31 23:01 static/image/common/back.gif
在我的MASM5.0上无问题,直接编译成功
试下调整下顺序mov ,al
这位高手,小弟也有一个问题。为什么把那个程序的mov ,al 顺序调换了就行了呢?BX SI 还有Idata的顺序有什么规定呢?可以列下那顺序吗?尽量讲得详细点。。。小弟新手不过理解能力还可以。。。。 高版本的masm里应该规定了,必须符合它已定义的格式才可以
比如以下几种方式,都是在书里给出的正确格式
MOV AX, MOV AX, 1000H
MOV AX, 1000H MOV AX, 1000H
这种格式要求我们不必太纠结,编译器怎么要求我们怎么做就好了
你的这种写法,在我用的masm5.0里,是能成功编译的
除了上面高手指出的错误之外我还发现一处错误
add bx,16
应该改为add bx,16h
如果不加H计算机只能认为你是BX+10
刚才刚运行了一下跟踪调试了一下。。。嘿嘿这个低级错误不应该错的。。。
add bx,16
在编辑器里这样写是对的,默认是10进制,在DEBUG里要换算成16进制加H 幕府幽魂 发表于 2011-6-2 15:44 static/image/common/back.gif
add bx,16
在编辑器里这样写是对的,默认是10进制,在DEBUG里要换算成16进制加H
那样写会引导前面出错》?? 改成书上的是没错 可是你能保证你跟书上的编译环境是一样的吗 每个版本的编译器代码规范都是不同的
页:
[1]