鱼C论坛

 找回密码
 立即注册
查看: 2931|回复: 9

汇编第6章实验5

[复制链接]
发表于 2012-2-25 19:27:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 cqy55555 于 2012-2-25 20:39 编辑

(5) 程序如下,编写code段中的内容,将a段和b段中的数据依次相加,将结果存到c段中。
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
c segment
        db 0,0,0,0,0,0,0,0
c ends
code segment
start:   mov ax,a
          mov ds,ax
          mov bx,0
          mov cx,8
s:       mov al,ds:[bx]
        add al,ds:[bx+16]                                             / /不够16个字节的安16个字节来算
         mov ds:[bx+32],al
         inc bx
          loop s
mov ax,4c00h
int 21h
code ends
end start

想也想不懂 为什么会这样做(网上找来的)


                               
登录/注册后可看大图
该贴已经同步到 KK学脚本的微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-25 19:29:17 | 显示全部楼层
本帖最后由 KK学脚本 于 2012-2-25 19:30 编辑

如果用小甲鱼的方法有怎么做
小甲鱼方法:
用A的数据 写入C中  然后用B+C

又怎么做


想破脑袋也想不到- - 高手们求教了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-25 19:50:13 | 显示全部楼层
你从网上搜索的答案个人认为不太合理,它实现的前提是这a b c三个数据段必须连续存放,每个段占用内存的16字节空间,否则上述程序不成立!
下面是我自己编写的程序:大体思路是把a段中的数据先依次放入d段,然后再把
其实实现方式有多种,例如你也可以将d段定义为栈段,然后让a段逆序入栈,再将b段数据依次累加到d段即可。
上面我说的d段即题目中的c段,因为在调试程序过程中c会使程序终止,所以改为d了,具体原因不详,如果谁知道,请指点………………
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-25 20:21:23 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-2-25 20:25 编辑

上面写的编译不通过  c是关键字 不能用做代码段 标号   

一个标号  a  不管多少数据    到下一个标号b 总是从整16位数据处开始  上个a数据段不够16的部分用0补齐!~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-25 20:56:34 | 显示全部楼层
就等于说ABC 是3排数据 1+2 放到3里面去
1...
2...
3...
因为。 上面的3排数据就像。只有16个位置的酒吧。无论你来了多少人。都是16个位置的。 你来一个人。也是16个位置。来2个人也是16个位置。
1排就是16个。
一共有3家酒吧。都是16个位置。
第一家酒吧的男人
第二家酒吧的女人
一起做到第三家酒吧的位置上。
- - 懂了吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-25 22:03:16 | 显示全部楼层
′____gougou 发表于 2012-2-25 20:56
就等于说ABC 是3排数据 1+2 放到3里面去
1...
2...

- - 说的好抽象 但是我想要的是真实的 指令+说明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-26 21:53:00 | 显示全部楼层
KK学脚本 发表于 2012-2-25 22:03
- - 说的好抽象 但是我想要的是真实的 指令+说明

下面不是有 不是很很形象的比喻。
就比如说。 电影院 前3排座位  每排 16个位置
第一排做女生
第2排做男士
然后,你这个大坏蛋把让他们男女搭配 挤到第3排里面去
懂了吧。,不管第一排做了几个女生。都是16个位置的
你要知道第3排的开头就是16*2  0-31 然后i你让女生和男士挤到一个位置里面去。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-26 23:10:40 | 显示全部楼层
莫名其妙 发表于 2012-2-25 20:21
上面写的编译不通过  c是关键字 不能用做代码段 标号   

一个标号  a  不管多少数据    到下一个标号b 总 ...

恩,原来如此,把C换成其他就好了···不知道王爽老师怎么编译的····
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-26 23:11:34 | 显示全部楼层
KK学脚本 发表于 2012-2-25 19:29
如果用小甲鱼的方法有怎么做
小甲鱼方法:
用A的数据 写入C中  然后用B+C

这是我自己编的,可以用,当然麻烦了些,准备精简下
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 cx,8
         mov ax,0
         
        s:
         mov ax,a
         mov ds,ax
         mov dl,ds:[bx]
     mov ax,b         
         mov ds,ax
         add dl,ds:[bx]
         mov ax,d
         mov ds,ax
         mov ds:[bx],dl
         inc bx
         loop s
         
     mov ax,4c00h
         int 21h
         
code ends

end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-27 13:35:05 | 显示全部楼层
:D:D:D:D:D呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 20:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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