鱼C论坛

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

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

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

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

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

x
本帖最后由 loop 于 2011-5-14 19:25 编辑
  1. assume cs:code
  2. a segment
  3. db  1,2,3,4,5,6,7,8
  4. a ends

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

  8. d  segment
  9. db  0,0,0,0,0,0,0,0
  10. d  ends

  11. code segment
  12. start:mov ax,a
  13. mov ds,ax
  14. mov ax,b
  15. mov es,ax
  16. mov ax,d
  17. mov ss,ax
  18. mov sp,25
  19. mov cx,8
  20. mov bx,0
  21. s:add ds:[bx],es:[bx]
  22. push ds:[bx]
  23. inc bx
  24. loop s


  25. mov ax,4c00h
  26. int 21h
  27. code ends
  28. 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, 2024-3-28 20:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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