汇编语言第二版 实验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 22:52 编辑ax对于这题可以哦。不过mov ax, 这句执行完了,是内存单元的值和内存单元的值存入ax,这个因为ax是16为寄存器嘛,所以必须要考虑位数匹配,以及高位对高地址。因为这题没有al相加进位到ah的情况,所以可以直接用ax来做,这样快一点,做一次加法就能加2个字节,但是这种方法,是投机取巧的,如果有进位什么的,就不能这么做了,用al做是普遍的算法。
你程序都自己想肯定是好事啊。这样印象深刻啊。时间慢点无所谓。检查自己的方法,直接看答案,虽然能看懂,但是效果不大,以后还是不会。
页:
[1]