实验一、数据排序实验一、实验目的熟悉8031指令系统,掌握程序设计方法。二、实验内容编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单元字节无符号的正整数,按从小到大的次序重新排列。三、实验程序框图NNN四、实验步骤1把8032片内RAM区50H—5AH中放入不等的数据(用寄存器读写方法)。2用连续运行方式从起始地址0100H开始运行程序(输入0100后按EXEC键)。3排序结束,显示“P.”。4用寄存器读写方法检查50—5AH中内容应从小到大排列。五、参考程序DORDE:MOVSP,#60H设置栈指针MOVR3,#50HDORDE1:MOVA,R3MOVR0,A数据指针传送到R0MOVR7,#0AH长度送到R7CLR00H清零标志位MOVA,@R0DORDE2:INCR0MOVR2,ACLRC清零进位标志MOV22H,@R0CJNEA,22H,DORDE3是否相等SETBCDORDE3:MOVA,R2JCDORDE4小于或等于不交换SETB00HXCHA,@R0DECR0XCHA,@R0大于交换位置INCR0DORDE4:MOVA,@R0DJNZR7,DORDE2JB00H,DORDE1未完继续MOVR0,#7EH完,关显示器前三位MOVA,#0FFHMOVR4,#06HDORDE5:MOV@RO,ADECR0DJNZR4,DORDE5MOV7EH,#0CH
以前做的实验 可以参考下有一个10个字节的有符号数组,编程实验使该数组的元素按照从小到大的次序排列。
data segment定义数据段
data1 db 32h,02h,01h,04h,0f1h,0f2h,0ffh,0fdh,0fah,79h
count equ $-data1
data ends
code segment
assume:ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov si,offset data1 指向序列首地址
mov bx,si 把序列首地址给bx
mov dx,count-1 外循环计数器
outside:mov cx,dx内循环计数器
push si 此循环处理的第一个单元地址
mov al,[si]
inside: inc si
cmp al,[si]
jl nexchg 若低于,则处理下一个
xchg [si],al若高于,则交换比较的两个单元
nexchg: loop inside 完成内部循环,继续
pop si
mov [si],al
inc si
dec dx
jnz outside 未完成外部循环,继续
code ends
end start
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)