鱼C论坛

 找回密码
 立即注册
查看: 2563|回复: 11

包含多个段的程序

[复制链接]
发表于 2013-7-11 22:33:44 | 显示全部楼层 |阅读模式

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

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

x
  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. c segment
  9.         db 0,0,0,0,0,0,0,0
  10. c ends

  11. code segment
  12. start:        mov ax,a
  13.                 mov ds,ax
  14.                 mov ax,0
  15.                 mov bx,8
  16.                 mov dx,10h
  17.                
  18.                 mov cx,8
  19.         s:        mov ds:[dx],ds:[ax]
  20.                 add ds:[ax],ds:[bx]
  21.                 inc ax
  22.                 inc bx
  23.                 inc dx
  24.                 loop s
  25.                
  26.                 mov ax,4c00h
  27.                 int 21h
  28.                
  29.                
  30.         code ends
  31. end start
  32. 怎么错了?
复制代码

题目

题目

编译连接出错

编译连接出错
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-11 23:15:39 | 显示全部楼层
楼主`~!看了你的代码发现有两个问题
c segment
db 0,0,0,0,0,0,0,0
c ends
这段代码前面的标号“c"在编译器里面至少是你使用的MASM版本是认为错误的,改成其他的就行
代码的23和24行的错误就是你没使用寄存器交换数据,段与段之间直接交换数据时不行的

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
Dardy + 1 + 1 + 1 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-11 23:47:09 | 显示全部楼层
add也不能两个都是内存单元。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-12 00:46:40 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-12 02:12:18 | 显示全部楼层
Dardy 发表于 2013-7-11 23:47
add也不能两个都是内存单元。

Mark,申请转正的时候提醒我给你颁发一个乐于助人的勋章~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-12 02:13:39 | 显示全部楼层
小甲鱼 发表于 2013-7-12 02:12
Mark,申请转正的时候提醒我给你颁发一个乐于助人的勋章~~~

这想法早准备好了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-12 11:15:29 | 显示全部楼层
281595933 发表于 2013-7-11 23:15
楼主`~!看了你的代码发现有两个问题
c segment
db 0,0,0,0,0,0,0,0

o 确实 换了就行了  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-12 11:18:19 | 显示全部楼层
Dardy 发表于 2013-7-11 23:47
add也不能两个都是内存单元。

哦 ,两个内存单元的都不醒 还是只有add不行?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-13 10:11:44 | 显示全部楼层
要通过寄存器转存,比如把源内存单元数据存到通用寄存器里,在把寄存器的数据存到目的内存单元。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-13 20:26:08 | 显示全部楼层
本帖最后由 ★远处的灯火 于 2013-7-13 20:29 编辑

assume cs:code,ds:data

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

code segment
start:        mov ax,data
                mov ds,ax
                mov bx,0
                mov cx,8
             s: mov ax,[bx]
                mov ds:[bx+16],ax
                mov ax,[bx+8]
                add [bx],ax
                inc bx
                loop s
               
                mov ax,4c00h
                int 21h
               
               
code ends
end start
照我这个代码试一试。{:7_169:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-20 12:16:57 | 显示全部楼层
★远处的灯火 发表于 2013-7-13 20:26
assume cs:code,ds:data

data segment

成功了哎成功了哎成功了哎
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-24 13:01:02 | 显示全部楼层
回答的不错。加油!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 03:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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