陈中炜 发表于 2012-8-1 17:32:18

汇编语言第二版 实验5.5

关于下面这个实验5.5,循环内容里面直接用ax也行吗?不应该是用al吗?另外:像这种有好几种编法的问题或者实验,我每次编好后看答案,发现我自己编的总是最优化的,就是编的过程比较慢,就这一题我自己大概编了有半个多小时,这种情况是好是坏啊? 实验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

lukelqz 发表于 2012-8-1 17:32:19

本帖最后由 lukelqz 于 2012-8-1 22:52 编辑

ax对于这题可以哦。不过mov ax, 这句执行完了,是内存单元的值和内存单元的值存入ax,这个因为ax是16为寄存器嘛,所以必须要考虑位数匹配,以及高位对高地址。因为这题没有al相加进位到ah的情况,所以可以直接用ax来做,这样快一点,做一次加法就能加2个字节,但是这种方法,是投机取巧的,如果有进位什么的,就不能这么做了,用al做是普遍的算法。

你程序都自己想肯定是好事啊。这样印象深刻啊。时间慢点无所谓。检查自己的方法,直接看答案,虽然能看懂,但是效果不大,以后还是不会。

页: [1]
查看完整版本: 汇编语言第二版 实验5.5