懒懒de高贵 发表于 2013-4-12 02:42:02

汇编实验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:}

小甲鱼 发表于 2013-4-12 03:23:20

mov ax, a这里是把a段的地址赋值到ax,而不是把a的前两个字节给ax。

懒懒de高贵 发表于 2013-4-12 03:26:57

小甲鱼 发表于 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:}

鬼人 发表于 2013-4-12 12:25:29

哥们,他不提示C什么的错误嘛?

ssyor 发表于 2013-4-12 12:47:23

一次传送两个字节效率高嘛!

小甲鱼 发表于 2013-4-12 15:10:29

懒懒de高贵 发表于 2013-4-12 03:26 static/image/common/back.gif
s:      mov ax,

      mov ss:,ax


bx这里是作为一个偏移呀,前边不是bx == 0了,循环一次bx+1指向下一个字节

喵星人 发表于 2013-4-13 16:49:40

我也觉得应该用al,运算8次每次将高位的结果覆盖,如果真的要执行效率高的话,mov cx,8应该
改为mov cx,4,inc bx应该改为add bx,2

1971827035 发表于 2013-4-14 19:43:50

两种方式都可以啊。运算结果不会使低位像高位产生进位啊,没有影响啊。

NGtailang 发表于 2013-4-14 20:07:57

难得甲鱼出手啊。还不好好学习
页: [1]
查看完整版本: 汇编实验5.5问题求解