鱼C论坛

 找回密码
 立即注册
查看: 8225|回复: 2

instruction operand must have size 这是什么问题造成的?

[复制链接]
发表于 2011-4-29 21:41:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 loop 于 2011-5-14 19:25 编辑
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,a
mov ds,ax
mov ax,b
mov es,ax
mov ax,d
mov ss,ax
mov sp,25
mov cx,8
mov bx,0
s:add ds:[bx],es:[bx]
push ds:[bx]
inc bx
loop s


mov ax,4c00h
int 21h
code ends
end start
小甲鱼老师帮忙看一下这样写的程序为什么编译不了?
这是实验5第5小题,我知道这样写的是跟题目要求的不一样~~我就是想看看 add ds:[bx],es:[bx]能不能行的通啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-29 21:57:46 | 显示全部楼层
加法指令 ADD(Addition)

格式: ADD OPRD1,OPRD2
----

功能: 两数相加
----

说明:
      1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可 以是任意一个存储器操作数.这给程序的编写带来了很大的方便.  OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数
  
       2. OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的           ,但不允许两个都是存储器操作数.理由是指令代码的寻址方式中规定了两个操作数(除立即数)至少有一个是寄存器操作数.


上面的是汇编金手指的解释。

评分

参与人数 1荣誉 +2 收起 理由
loop + 2 热心回复,鱼C有你更精彩~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-13 21:19:46 | 显示全部楼层
instruction operand must have size             命令操作数必须有长度
一般是不允许两个内存的内容相加的,要指定长度:byte ptr/word ptr,但一般加了还是有错误的。所以一般不用内存+内存。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-2 20:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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