鱼C论坛

 找回密码
 立即注册
查看: 1636|回复: 4

调试7.9习题中的一个问题

[复制链接]
发表于 2013-9-19 16:41:34 | 显示全部楼层 |阅读模式
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:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-19 16:41:35 | 显示全部楼层
我把你的代码复制下来,编译了一下提示
error A2070: invalid instruction operands
也是在你所说的出错行。
我上网查了一下,这句话的意思是无效指令参数,我想,那个操作数无效?
你写的是[bx+3+si],好像是这种写法不正确把,我换成了 [bx+si+3]就编译通过了。所以,我猜测应该只能用[bx+si+idata]这种方式寻址吧,连顺序都不能颠倒的。。。。{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-19 17:40:14 | 显示全部楼层

或者加入 byte ptr 也可通过编译,也可能是编译器规则问题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-20 01:32:52 | 显示全部楼层
基本规则要牢记 刚开始都这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-20 10:02:21 | 显示全部楼层
LinuxDeepin 发表于 2013-9-19 17:40
或者加入 byte ptr 也可通过编译,也可能是编译器规则问题!

感谢帮助,其实我也觉得是编译器规则问题,我用的是masm6版本,上面那哥们写了那么多我于心不忍,但只能评价一个最佳答案,所以,不好意思了哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 07:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表