寻找兔子滴萝卜 发表于 2013-9-19 16:41:34

调试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就能运行 ,麻烦高手指点下

machine1 发表于 2013-9-19 16:41:35

我把你的代码复制下来,编译了一下提示
error A2070: invalid instruction operands
也是在你所说的出错行。
我上网查了一下,这句话的意思是无效指令参数,我想,那个操作数无效?
你写的是,好像是这种写法不正确把,我换成了 就编译通过了。所以,我猜测应该只能用这种方式寻址吧,连顺序都不能颠倒的。。。。{:1_1:}

LinuxDeepin 发表于 2013-9-19 17:40:14

machine1 发表于 2013-9-19 17:23 static/image/common/back.gif
我把你的代码复制下来,编译了一下提示
error A2070: invalid instruction operands
也是在你所说的出错 ...

或者加入 byte ptr 也可通过编译,也可能是编译器规则问题!

雪忆 发表于 2013-9-20 01:32:52

基本规则要牢记 刚开始都这样

寻找兔子滴萝卜 发表于 2013-9-20 10:02:21

LinuxDeepin 发表于 2013-9-19 17:40 static/image/common/back.gif
或者加入 byte ptr 也可通过编译,也可能是编译器规则问题!

感谢帮助,其实我也觉得是编译器规则问题,我用的是masm6版本,上面那哥们写了那么多我于心不忍,但只能评价一个最佳答案,所以,不好意思了哈
页: [1]
查看完整版本: 调试7.9习题中的一个问题