KK学脚本 发表于 2012-2-25 19:27:45

汇编第6章实验5

本帖最后由 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:
      add al,ds:                                             / /不够16个字节的安16个字节来算
         mov ds:,al
         inc bx
          loop s
mov ax,4c00h
int 21h
code ends
end start

想也想不懂 为什么会这样做(网上找来的){:5_107:}

http://bbs.fishc.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 KK学脚本的微博

KK学脚本 发表于 2012-2-25 19:29:17

本帖最后由 KK学脚本 于 2012-2-25 19:30 编辑

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

又怎么做


想破脑袋也想不到- - 高手们求教了{:5_96:}

非同凡想 发表于 2012-2-25 19:50:13

你从网上搜索的答案个人认为不太合理,它实现的前提是这a b c三个数据段必须连续存放,每个段占用内存的16字节空间,否则上述程序不成立!
下面是我自己编写的程序:大体思路是把a段中的数据先依次放入d段,然后再把
其实实现方式有多种,例如你也可以将d段定义为栈段,然后让a段逆序入栈,再将b段数据依次累加到d段即可。
上面我说的d段即题目中的c段,因为在调试程序过程中c会使程序终止,所以改为d了,具体原因不详,如果谁知道,请指点………………

莫名其妙 发表于 2012-2-25 20:21:23

本帖最后由 莫名其妙 于 2012-2-25 20:25 编辑

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

一个标号a不管多少数据    到下一个标号b 总是从整16位数据处开始上个a数据段不够16的部分用0补齐!~

′____gougou 发表于 2012-2-25 20:56:34

就等于说ABC 是3排数据 1+2 放到3里面去
1...
2...
3...
因为。 上面的3排数据就像。只有16个位置的酒吧。无论你来了多少人。都是16个位置的。 你来一个人。也是16个位置。来2个人也是16个位置。
1排就是16个。
一共有3家酒吧。都是16个位置。
第一家酒吧的男人
第二家酒吧的女人
一起做到第三家酒吧的位置上。
- - 懂了吧。

KK学脚本 发表于 2012-2-25 22:03:16

′____gougou 发表于 2012-2-25 20:56 static/image/common/back.gif
就等于说ABC 是3排数据 1+2 放到3里面去
1...
2...


- - 说的好抽象 但是我想要的是真实的 指令+说明

′____gougou 发表于 2012-2-26 21:53:00

KK学脚本 发表于 2012-2-25 22:03 static/image/common/back.gif
- - 说的好抽象 但是我想要的是真实的 指令+说明

下面不是有 不是很很形象的比喻。
就比如说。 电影院 前3排座位每排 16个位置
第一排做女生
第2排做男士
然后,你这个大坏蛋把让他们男女搭配 挤到第3排里面去
懂了吧。,不管第一排做了几个女生。都是16个位置的
你要知道第3排的开头就是16*20-31 然后i你让女生和男士挤到一个位置里面去。

疾风飘流 发表于 2012-2-26 23:10:40

莫名其妙 发表于 2012-2-25 20:21 static/image/common/back.gif
上面写的编译不通过c是关键字 不能用做代码段 标号   

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

恩,原来如此,把C换成其他就好了···不知道王爽老师怎么编译的····

疾风飘流 发表于 2012-2-26 23:11:34

KK学脚本 发表于 2012-2-25 19:29 static/image/common/back.gif
如果用小甲鱼的方法有怎么做
小甲鱼方法:
用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:
   mov ax,b       
       mov ds,ax
       add dl,ds:
       mov ax,d
       mov ds,ax
       mov ds:,dl
       inc bx
       loop s
       
   mov ax,4c00h
       int 21h
       
code ends

end start

KK学脚本 发表于 2012-2-27 13:35:05

:D:D:D:D:D呵呵
页: [1]
查看完整版本: 汇编第6章实验5