鱼C论坛

 找回密码
 立即注册
查看: 2221|回复: 17

为何编译不通过?

[复制链接]
发表于 2013-8-10 01:32:42 | 显示全部楼层 |阅读模式
1鱼币
assume cs:code

a segment
   db 1,2,3,4,5,6,7,8
a ends

b segment
   db 1,2,3,4,5,6,7,8
b ends

d segment
   db 0,0,0,0,0,0,0,0
d ends

code segment

start: mov al,0
       mov bl,0
       mov dl,16
s:     add al,[bl]
           mov [dl],al
           inc bl
           inc dl
           loop s
          
           mov ax,4c00h
           int 21h
code ends
end start
为什么红色那行编译通不过呢?

最佳答案

查看完整内容

如果是ds 为段地址的话 就只能是BX 依旧申请最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-10 01:32:43 | 显示全部楼层

如果是ds 为段地址的话 就只能是BX
依旧申请最佳

评分

参与人数 1荣誉 +1 鱼币 +3 贡献 +1 收起 理由
Crazy迷恋. + 1 + 3 + 1 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

发表于 2013-8-10 03:29:03 | 显示全部楼层
s:     add al,[bl] ;偏移地址只能使用16位寄存器来保存不能用8位寄存器来指定偏移地址
           mov [dl],al
CPU内部寻址方式,16位段地址+16位偏移地址=20位物理地址
你使用了一个8位的寄存器来指定偏移地址,进行内存地址的寻址这是肯定会报错的

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

使用道具 举报

 楼主| 发表于 2013-8-10 09:36:03 | 显示全部楼层
本帖最后由 红头发 于 2013-8-10 09:58 编辑
小咒 发表于 2013-8-10 03:29
CPU内部寻址方式,16位段地址+16位偏移地址=20位物理地址
你使用了一个8位的寄存器来指定偏移地址,进行内 ...

assume cs:code

a segment
   db 1,2,3,4,5,6,7,8
a ends

b segment
   db 1,2,3,4,5,6,7,8
b ends

d segment
   db 0,0,0,0,0,0,0,0
d ends

code segment

start: mov ax,cs         mov ds,ax
         mov bx,0
         mov dx,16
s:       add al,[bx]
           mov [dx],al
           inc bx
           inc dx
           loop s
           
           mov ax,4c00h
           int 21h
code ends
end start
改成这样后为什么红色这句还是错的呢?

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

使用道具 举报

发表于 2013-8-10 10:57:08 | 显示全部楼层
红头发 发表于 2013-8-10 09:36
assume cs:code

a segment

物理地址是 段地址:偏移地址啊
  20为          16位      16位
al 是8位的啊 所以就算 mov[dx],al dx还是相当于8位的啊
al 改成 ax试试吧
如果成功申请最佳啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-10 12:55:12 | 显示全部楼层
          mov ah,0
           add al,[bx]
           mov [dx],ax
           inc bx
           inc dx
           loop s

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

使用道具 举报

 楼主| 发表于 2013-8-10 15:02:05 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-10 10:57
物理地址是 段地址:偏移地址啊
  20为          16位      16位
al 是8位的啊 所以就算 mov[dx],al dx ...

还是不行啊,我直接进debug打代码,发现可能是[dx] 和[bx]有区别,难道是只有【bx】才能代表偏移地址??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-10 15:03:57 | 显示全部楼层
liangivws 发表于 2013-8-10 12:55
mov ah,0
           add al,
           mov [dx],ax

不行啊。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-10 15:06:17 | 显示全部楼层
如果是CMD窗口下  可以不用bx  可以直接[一个数值]   但是文本下编写 必须用bx 也就是[bx]   而你的是个[bl]啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-10 15:07:07 | 显示全部楼层
文本下,每个寄存器搜有特殊意义的,例如,寻址时,bx代表偏移,循环时,cx代表次数,你不要乱用哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-10 15:10:04 | 显示全部楼层
1236 发表于 2013-8-10 15:07
文本下,每个寄存器搜有特殊意义的,例如,寻址时,bx代表偏移,循环时,cx代表次数,你不要乱用哦

嗯,谢谢啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-10 15:10:54 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-10 15:06
如果是ds 为段地址的话 就只能是BX
依旧申请最佳

嗯,看来我前面的课还是没学好,复习复习!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-10 15:12:05 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-10 15:06
如果是ds 为段地址的话 就只能是BX
依旧申请最佳

嗯,看来我前面的课还是没学好,复习复习!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-10 16:38:21 | 显示全部楼层
红头发 发表于 2013-8-10 15:02
还是不行啊,我直接进debug打代码,发现可能是[dx] 和有区别,难道是只有【bx】才能代表偏移地址??

不知道你学习到哪里了,可能还没学习到后面吧
先和你说一下

8086CPU中bx,bp,si,di只有这4个寄存器可以用在[..]中来进行内存单元的寻址
但是这4个寄存器只能以4种组合出现,[bx+si][bx+di][bp+si][bp+di]
bp的默认寄存器是在ss而不是在ds,所以可以理解为bp与sp是相同的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-10 16:43:48 | 显示全部楼层
小咒 发表于 2013-8-10 16:38
不知道你学习到哪里了,可能还没学习到后面吧
先和你说一下

嗯,还没看到后面,请问你是用几天学习完汇编的,我觉的自己的进度很慢。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-10 16:53:45 | 显示全部楼层
红头发 发表于 2013-8-10 16:43
嗯,还没看到后面,请问你是用几天学习完汇编的,我觉的自己的进度很慢。。

学无止尽,王爽的书还没学完我也才学习到第十章
目前学习了20天了不是每天在学的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-10 19:06:16 | 显示全部楼层
小咒 发表于 2013-8-10 16:53
学无止尽,王爽的书还没学完我也才学习到第十章
目前学习了20天了不是每天在学的。。

嗯,谢谢啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-11 01:16:52 | 显示全部楼层
看看楼主学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 05:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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