鱼C论坛

 找回密码
 立即注册
查看: 2174|回复: 1

[技术交流] 关于第六章 实验5(5)

[复制链接]
发表于 2022-2-8 23:50:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 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,[bx]
                mov es:[bx],al
                inc bx
                loop s
                mov ax,b
                mov ds,ax
                mov bx,0
                mov cx,8
         s0:mov al,[bx]
                add es:[bx],al
                inc bx
                loop s0
               
                mov ax,4c00h
                int 21h

code ends
end start


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

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


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

最后实验还是成功了



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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-21 05:48:19 | 显示全部楼层
感谢 想了半天不知道三个数据段不知道怎么用,  前面都是配合栈段,数据段,代码段
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 20:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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