汇编实验5.5问题求解
关于,实验5 编写、调试具有多个段的程序(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,b
mov es,ax
mov ax,c
mov ss,ax
mov bx,0
mov cx,8
s: mov ax,
mov ss:,ax
mov ax,es:
add ss:,ax
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
为什么前面定义的是db字节型数据而后面却用ax呢?不是应该用al的吗?{:5_94:}
mov ax, a这里是把a段的地址赋值到ax,而不是把a的前两个字节给ax。 小甲鱼 发表于 2013-4-12 03:23 static/image/common/back.gif
mov ax, a这里是把a段的地址赋值到ax,而不是把a的前两个字节给ax。
s: mov ax,
mov ss:,ax
mov ax,es:
add ss:,ax
是这里的ax哦····{:5_94:} 哥们,他不提示C什么的错误嘛? 一次传送两个字节效率高嘛! 懒懒de高贵 发表于 2013-4-12 03:26 static/image/common/back.gif
s: mov ax,
mov ss:,ax
bx这里是作为一个偏移呀,前边不是bx == 0了,循环一次bx+1指向下一个字节 我也觉得应该用al,运算8次每次将高位的结果覆盖,如果真的要执行效率高的话,mov cx,8应该
改为mov cx,4,inc bx应该改为add bx,2 两种方式都可以啊。运算结果不会使低位像高位产生进位啊,没有影响啊。 难得甲鱼出手啊。还不好好学习
页:
[1]