8086汇编语言题目,最好能一句一句的解释,

2024-12-23 08:25:00
推荐回答(1个)
回答1:

DWORD BUF[6]=5,6,1,9,8,2;
DWORD VAR=0;
#define COUNT 6
main() // statr: 后面肯定有 END start,定义入口点
{
    WORD INDEX = 0;          // SI 存放基址这里改为索引,更方便理解
    WORD CX = COUNT;         // CX 存放计数
    DWORD AX = BUF[0];       // AX 存放 BUF 数组的第一个值,
                             // JB 是无符号跳转,所以用的是 DWORD(unsigned int) 类型
    while(CX)                // NEXT 用于 while(CX) 语句
    {                        // FORWORD 用于 if(AX > BUF[INDEX])语句
        if(AX > BUF[INDEX])// 优化惯例,条件反转
       {
             AX = BUF[INDEX]; // 比较,然后取更小的值。
        }
        INDEX += 1;          // 汇编没类型,因此 WORD 必须 + 2,在C中索引则 +1 即可。
        CX --;                // loop 每循环一次,CX 减去1
    }
    VAR = AX;                 // 结果存放于 VAR 中。
}

程序执行后变量VAR = 1

结论:循环比较找出 BUF 数组中最小的值,并放置结果于 VAR 中。

评价:此代码逻辑比较糟糕,无需和数组的第一个值比较,因为是同一个数。