|
|
5鱼币
最近在跟着小甲鱼视频 自学汇编
书后问题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 ,[bx+3+si] ;masm 报错
- and al ,11011111b
- mov [bx+3+si] ,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:}
|