基于8086用汇编语言实现的十个有符号数的排序(冒泡排序算法,输入为补码,从小到大)

  • 格式:doc
  • 大小:28.00 KB
  • 文档页数:2

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

提示:在做实验时,我们要自己将代码区和数据区分开,因为8086上没有软件帮我们完成这个任务。

MOV R0,#218 //之所以选择208这个大点的地址,是因为避免将数据写到了代码区LOOP1:IN //将数据读入A

ADD A,#128 //将补码转换为其对应的移码,因为补码本身参与加减不能比较出大

//小,而移码就是将其真值在数轴上平移了2的n次方MOV @R0,A

MOV A,R0

sub a,#1

SUB A,#208 //判断有没有输入完10个数

JZ LOOP2 //输入完数据,跳转

ADD A,#208

MOV R0,A

JMP LOOP1//没有输入完,就跳回接着输入

LOOP2:MOV R0,#9 //9轮循环比较就可以排完序

MOV R1,#209

MOV R2,#210

LOOP4:MOV A,@R2

SUBC A,@R1

JC LOOP3 //若210地址指向的单元中的数比209地址指向的单元中的小,则交

//换

LOOP5:MOV A,R2

ADD A,#1

SUBC A,#219 //判断此轮有没有比较完

JZ LOOP6 //若比较完,就跳到LOOP6,否则继续比较

ADD A,#219

MOV R2,A

JMP LOOP4

LOOP3:MOV A,@R1

MOV 208,A

MOV A,@R2

MOV @R1,A

MOV A,208

MOV @R2,A

JMP LOOP5 //交换完了就跳回

LOOP6: MOV A,R1

ADD A,#1

MOV R1,A

ADD A,#1

MOV R2,A //让R2始终指向的是R1下一个单元

MOV A,R0

SUB A,#1

JZ LOOP7 //判断9轮比较有没有完成,若完成,跳LOOP7,否则,继续比

//较

MOV R0,A

JMP LOOP4

LOOP7: MOV R0,#218

LOOP9: MOV A,@R0 //下面这一段代码就是将数还原,因为原来我们是那人家的移码

//形式来比较的,相信下面这一段就不用多讲了吧ADD A,#128

MOV @R0,A

MOV A,R0

sub a,#1

SUB A,#208

JZ LOOP8

ADD A,#208

MOV R0,A

JMP LOOP9

LOOP8:END