|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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的标记 名字区分开了
希望可以加深记忆 帮我主以后不再犯相同的错误
最后实验还是成功了
感谢小甲鱼的课程 以及 无私的分享
|
|