鱼C论坛

 找回密码
 立即注册
查看: 1710|回复: 6

汇编代码编译不通过,为什么?

[复制链接]
发表于 2012-11-2 20:08:23 | 显示全部楼层 |阅读模式
1鱼币
  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. c1 segment
  9.         db 0,0,0,0,0,0,0,0
  10. c1 ends

  11. code segment

  12. start:        mov ax,a
  13.                 mov ds,ax
  14.                 mov ax,b
  15.                 mov es,ax
  16.                 mov ax,c1
  17.                 mov ss,ax
  18.                 mov sp,8
  19.                 mov bx,0
  20.                 mov cx,8
  21.                
  22.                 s:mov ax,0
  23.                 add al,ds:[bx]
  24.                 add al,es:[bx]
  25.                 inc bx
  26.                 push al
  27.                 loop s
  28.                
  29.                 mov ax,4c00h
  30.                 int 21h
  31.                 code ends
  32.         end start
复制代码
请鱼友们帮忙检测一下这个代码段。为什么无法编译通过呢?push al 这个指令有什么问题呢?

最佳答案

查看完整内容

可以用低八位存储一个数据,高八位再存一个,然后再push 而且用push的话就只能把cx定义为4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-2 20:08:24 | 显示全部楼层
可以用低八位存储一个数据,高八位再存一个,然后再push 而且用push的话就只能把cx定义为4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-10 00:58:16 | 显示全部楼层
只能push字形的数据,不能使字节型的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-10 07:59:40 | 显示全部楼层
貌似LZ想实现相加的结果放在c1段中,有几个地方需要注意一下,只是个人理解啊
1. 定义的时候最好用:assume cs:code, ds:data, ss:stack
2. 数据的定义可以放在一起
data segment
  db 1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0
  db 1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0
data ends
3. 如果用push入栈最好以字型为单位
                mov bx,6
                mov cx,4
               
                s:
                mov ax,ds:[bx]
                add ax,es:[bx]
                sub bx, 2
                push ax
                loop s
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-10 08:30:15 | 显示全部楼层
谢谢soyer!这是王爽老师书上的一道题,着这让我很纠结。我试过用后新学的长度标识 byte ptr 或 word ptr 还是不行。不知道 为什么书上会来这么一题。请看下图: QQ截图20121102225723.png


补充内容 (2012-11-10 08:32):
王爽 《汇编语言》 第二版 电子书 第148页
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-10 11:55:44 | 显示全部楼层
楼主代码   太乱 正确专业的代码 assume cs:code ,ds:data,ss:stack
  • add al,ds:[bx]
  •   add al,es:[bx]
  • 这两条数据长度不符合   应该 add ax,ds:[bx]      add ax,es:[bx]
  • 还有push  也是数据长度不符 、、、、、、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-10 23:56:41 | 显示全部楼层
忍着往学了几节,好像有点懂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 20:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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