微机原理实验数据排序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广州大学学生实验报告
四、程序框图
Len equ 10
data segment
Array db 5,2,1,0,2,3,8,6,5,9
Change db 0
data ends
code segment
assume cs:code, ds:data
start proc near
mov ax, data
mov ds, ax
Sort:
mov bx, offset Array
mov cx, Len-1
mov Change, 0
Goon:
mov al, byte ptr [bx]
inc bx
cmp al, byte ptr [bx]
jng Next ; 前小后大, 不交换
mov Change, 1 ; 前大后小, 置交换标志
mov ah, [bx]
mov [bx] ,al ; 交换
mov [bx-1], ah
Next:
loop Goon
cmp Change, 0
jne Sort
jmp $
code ends
end start
五、实验步骤
(1) 进入Wave6000,输入程序并检查,保存程序。
(2) “编译”程序。
(3) 在指令“jmp $”处设断点。
(4) “全速执行”程序。
(5) 在“数据窗口(MEMOREY)”查瞧0400H开始的10个单元的内容,记录并分析实验结果。
结果:00 01 02 02 03 05 05 06 08 09
实验结果分析:实验中的jne与jng都就是条件跳转语句(<=),通过循环依次比较,Change就是前两个数的交换标志
六、总结
刚开始运行程序,不理解代码中为什么要加置交换标志Change。之后,我把Change的语句去掉后,重新编译执行,发现结果也就是正确的,但就是程序不会停止跳出。然后我单步调试,程序一直循环。仔细想想,才理解了Change语句的真
正含义:因为jne Sort 就是条件跳转语句,所以在这之前必须要有条件(cmp Change, 0),当没有前面的数比后面的数大时,Chang为0, cmp Change, 0 成立跳出程序结束