鱼C论坛

 找回密码
 立即注册
查看: 1919|回复: 1

汇编语言第二版 实验5.5

[复制链接]
发表于 2012-8-1 17:32:18 | 显示全部楼层 |阅读模式
1鱼币
关于下面这个实验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,[bx]
        mov ss:[bx],ax
        mov ax,es:[bx]
        add ss:[bx],ax
        inc bx
        loop s
        mov ax,4c00h
        int 21h
code ends
end start

最佳答案

查看完整内容

ax对于这题可以哦。不过mov ax, 这句执行完了,是内存单元的值和内存单元的值存入ax,这个因为ax是16为寄存器嘛,所以必须要考虑位数匹配,以及高位对高地址。因为这题没有al相加进位到ah的情况,所以可以直接用ax来做,这样快一点,做一次加法就能加2个字节,但是这种方法,是投机取巧的,如果有进位什么的,就不能这么做了,用al做是普遍的算法。 你程序都自己想肯定是好事啊。这样印象深刻啊。时间慢点无所谓。检查自己的方 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-1 17:32:19 | 显示全部楼层
本帖最后由 lukelqz 于 2012-8-1 22:52 编辑

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-19 13:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表