woshixy1 发表于 2022-2-8 23:50:28

关于第六章 实验5(5)

本帖最后由 woshixy1 于 2022-2-8 23:52 编辑

(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 ax,c
                mov es,ax
                mov bx,0
                mov cx,8
            s:mov al,
                mov es:,al
                inc bx
                loop s
                mov ax,b
                mov ds,ax
                mov bx,0
                mov cx,8
         s0:mov al,
                add es:,al
                inc bx
                loop s0
               
                mov ax,4c00h
                int 21h

code ends
end start


这个实验我开始做的时候没有看答案 是自己做么这写的
大概的 思绪就是 小甲鱼 课上说的
                把 a段的值 移动到 c段
                再把b段加上c段 的值放在c段
      错误点
                我些的 给C段赋值是这样的
                        mov c:,
                        inc bx
                这个语法错误了 我想着 可以直接调用C段 但是忘了 把C段的地址 赋给es 这个附加段了
                由于这个错误 还导致了 我赋值的 给C段赋值的时候 不能 选择按字节 其实这里就可以看出这个表达式很奇怪了
                loop 这里 我开始的时候 两个循环标记 我都给标记成 s了。。。这里也是疏忽
后面我参考了答案

引入了 al 和 es 这两个参数帮助过度
并且 按照答案里面 给loop的标记 名字区分开了


希望可以加深记忆 帮我主以后不再犯相同的错误

最后实验还是成功了



感谢小甲鱼的课程 以及 无私的分享


qwe741852 发表于 2023-11-21 05:48:19

感谢 想了半天不知道三个数据段不知道怎么用,前面都是配合栈段,数据段,代码段
页: [1]
查看完整版本: 关于第六章 实验5(5)