调试7.9习题中的一个问题
最近在跟着小甲鱼视频 自学汇编书后问题7.9
我写的代码如下assume cs:code,ds:data,ss:stack
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
start:
mov ax ,data
mov ds ,ax
mov ax ,stack
mov ss ,ax
mov sp ,16
mov bx ,0
mov cx ,4 ;定义循环的行,控制行
s: push cx ;把CX的值暂时压入栈中
mov si ,0
mov cx ,4 ;定义循环的列,控制列
s0: mov al , ;masm 报错
and al ,11011111b
mov ,al ;masm 报错
add si ,1
loop s0
add bx ,16
pop cx ;取回CX值,出栈
loop s
mov ax ,4c00h
int 21h
code ends
end start为什么al就报错,换成ax就能运行 ,麻烦高手指点下
我把你的代码复制下来,编译了一下提示
error A2070: invalid instruction operands
也是在你所说的出错行。
我上网查了一下,这句话的意思是无效指令参数,我想,那个操作数无效?
你写的是,好像是这种写法不正确把,我换成了 就编译通过了。所以,我猜测应该只能用这种方式寻址吧,连顺序都不能颠倒的。。。。{:1_1:} machine1 发表于 2013-9-19 17:23 static/image/common/back.gif
我把你的代码复制下来,编译了一下提示
error A2070: invalid instruction operands
也是在你所说的出错 ...
或者加入 byte ptr 也可通过编译,也可能是编译器规则问题! 基本规则要牢记 刚开始都这样 LinuxDeepin 发表于 2013-9-19 17:40 static/image/common/back.gif
或者加入 byte ptr 也可通过编译,也可能是编译器规则问题!
感谢帮助,其实我也觉得是编译器规则问题,我用的是masm6版本,上面那哥们写了那么多我于心不忍,但只能评价一个最佳答案,所以,不好意思了哈
页:
[1]