鱼C论坛

 找回密码
 立即注册
查看: 2274|回复: 10

[已解决]书上第158页 问题7.9

[复制链接]
发表于 2018-9-17 13:16:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:codesg,ds:datasg,ss:stacksg

datasg segment
        db '1. display      '
        db '2. brows        '
        db '3. replace      '
        db '4. modify       '
datasg ends

stacksg segment
        dw 10 dup(0)
stacksg ends

codesg segment
start:
                mov ax,datasg
                mov ds,ax
                mov ax,stacksg
                mov ss,ax
                mov sp,20H
                
                mov bx,0
                mov cx,4
        s1: mov si,0
                push cx
                mov cx,4
                mov ah,0
        s2: mov al,byte ptr[bx+3+si];为什么一定要加byte ptr,不是可以根据寄存器判断处理的长度吗
                and al,11011111b
                mov byte ptr[bx+3+si],al
                inc si
                loop s2
                
                pop cx
                add bx,16
                loop s1
                
                mov ax,4c00h
                int 21h
                
codesg ends
end start

问题在上面的注释中,为什么一定要在mov al,[bx+3+si]这条语句前面加上byte ptr来指明这是一个字节型数据,不然就会报错A2070
最佳答案
2018-9-17 14:50:58
甲鱼零基础汇编,39集,12:49,针对立即数的修饰
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-17 13:36:26 From FishC Mobile | 显示全部楼层
主要是立即数 3,要说明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-17 14:04:27 | 显示全部楼层
mov        al, [bx + si + 3]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-17 14:14:32 | 显示全部楼层

常数不是放那里都可以吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-17 14:15:13 | 显示全部楼层
claws0n 发表于 2018-9-17 13:36
主要是立即数 3,要说明

可以这样使用吧,我记得
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-17 14:17:24 | 显示全部楼层
20180906 发表于 2018-9-17 14:14
常数不是放那里都可以吗

立即数放在后面
mov 寄存器, [寄存器 + 寄存器 + 立即数]

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-17 14:25:16 | 显示全部楼层
人造人 发表于 2018-9-17 14:17
立即数放在后面
mov 寄存器, [寄存器 + 寄存器 + 立即数]

应该不是这个问题吧,我在书上第151页倒数第三行看见了我这种用法,
mov bc,[bx+2+di]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-17 14:26:30 | 显示全部楼层
人造人 发表于 2018-9-17 14:17
立即数放在后面
mov 寄存器, [寄存器 + 寄存器 + 立即数]

而且我另外一个帖子,就是实验七这样写也没有报错,只是运行不出来,大佬能不能一并帮我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-17 14:27:25 From FishC Mobile | 显示全部楼层
人造人 发表于 2018-9-17 14:17
立即数放在后面
mov 寄存器, [寄存器 + 寄存器 + 立即数]

都可以吧,最后也会得到累加后的偏移地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-17 14:50:58 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
甲鱼零基础汇编,39集,12:49,针对立即数的修饰
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-17 15:19:29 | 显示全部楼层
已经解决了,我发现如果是mov 寄存器,[bx+idata+si],后面[]中的内容顺序可以是随意的(我记得小甲鱼讲过,我笔记上有)。主要问题在于前面的寄存器只能是ax或者bx这样的通用寄存器。
其实这一点小甲鱼视频里面也有说到(提了一下),还是看视频的时候没太注意。刚刚又去看了一遍,就听到了,实验了之后发现应该是这个问题。你们可以自己试试哈。
谢谢大家帮忙!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 15:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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