首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

求大牛给出以下代码注释解决办法

2012-03-04 
求大牛给出以下代码注释code segmentorg 100hassume cs:code,ds:codemain: jmp startarray dw 1234h,5673h

求大牛给出以下代码注释
code segment
org 100h
assume cs:code,ds:code
main: jmp start
array dw 1234h,5673h,7fffh,8000h,0dffh
 dw 0ab5h,0369h,005fh,5634h,9069h
count equ $-array
start: mov cx,count
shr cx,1
dec cx
mov bl,-1
again: mov dx,cx
and bl,bl
je exit
xor bl,bl
xor si,si
again1: mov ax,array[si]
cmp ax,array[si+2]
jle nchg
xchg array[si+2],ax
mov array[si],ax
mov bl,-1
nchg: inc si
inc si
dec dx
jnz again1
loop again
exit:int 20h
codeends
end main


[解决办法]
code segment ;代码段
org 100h ;移动100H
assume cs:code,ds:code ;CS DS指向代码段起始 
main: jmp start ;入口 跳到START标志
array dw 1234h,5673h,7fffh,8000h,0dffh ;声明数组,每个占一个字的空间
dw 0ab5h,0369h,005fh,5634h,9069h
count equ $-array ;COUNT的值是当前地值减ARRAY的值
start: mov cx,count ;起始 把count送到CX
shr cx,1 ;CX中的数据逻辑右移1次

dec cx ;CX中的数据减1
mov bl,-1 ;把-1送到BL
again: mov dx,cx ;again标志 把CX的值送DX
and bl,bl ;BL与自身与操作
je exit ;BL结果为0跳到exit
xor bl,bl
xor si,si ;异或
again1: mov ax,array[si] ;把第SI个数组值送到AX
cmp ax,array[si+2] ;与下个数组值作比较
jle nchg 第一个大
xchg array[si+2],ax ;两个交换
mov array[si],ax 
mov bl,-1 
nchg: inc si ;SI+1
inc si ;SI+1
dec dx ;DX-1
jnz again1 ;DX不等于0跳到again1
loop again ;跳到again
exit:int 20h ;返回DOS
code ends ;代码段结束
end main ;main函数结束
[解决办法]
冒泡排序,其中bl用来表明本次冒泡是否有交换,bl为-1说明有交换,bl为0,说明没有交换本次排序完毕。

热点排行