发布网友 发布时间:2022-04-29 07:57
共1个回答
热心网友 时间:2022-06-24 13:49
答:楼主程序有三个语法错误:
错误1:没有初始化段寄存器DS,ASSUME仅仅是把DSEG与DS寄存器关联,并没有把数据段的段基址存入段寄存器DS中,因此要加入语句:"MOV AX,DSEG MOV DS,AX";
错误2:因为本程序中的DATE中的数据全部是8位二进制,如果把8位赋给16位的寄存器,那么寄存器高8位的数的不定性会打乱本程序;
错误3:ret指令是子程序的返回指令(本程序中无子程序),ret无法实现楼主想要的退出程序操作,可以用JMP跳转到程序的末尾退出程序。
程序逻辑:楼主的逻辑是通过冒泡排序的方式把最大数存入CL,最小数存入AL。修改后的程序通过调试跟踪发现已实现此效果,无逻辑错误。
图A为修改后的源程序,图B为调试过程中程序执行完毕退出前寄存器中的数据存储情况(从标注可以看到:AL中存储的是最小数,BL中存储的是中间数,CL中存储的是最大数)。
图A:
图B: