2 qq 34378013 qq_34378013 于 2017.04.16 20:21 提问

汇编语言冒泡法排序两位数 输出不了结果 求大神指教

一个汇编语言的问题 冒泡法排序多个两位数,我的思路是把一个两位数存在一个AL里面然后排序再输出
但是没有办法输出结果 哪位大神可以点明一下 刚入门汇编 还不太懂 多谢多谢

 DATA SEGMENT                   
  NUMBER DB 100,?,100 DUP(?)               ;开辟空白空间
  TAB DB 0DH,0AH,'$'                     ;空格回车
  LIST1 DB 'INPUT NUMBERS$'               ;输入数字
  LIST2 DB 'INPUT NUMBERS$'               
DATA ENDS

CODE SEGMENT
  ASSUME DS:DATA , CS:CODE
START:
  MOV AX,DATA
  MOV DS,AX
  LEA DX,LIST1                         ;将文字显示到屏幕上
  MOV AH,09H                         ;09H功能 显示字符
  INT 21H                             ;DOS调用
  LEA DX,TAB                            ;空格回车
  MOV AH,09H                          ;显示回车空格在屏幕上
  INT 21H


INPUT:  
  LEA BP,NUMBER
  XOR BX,BX
  MOV AH,01H
  INT 21H
  SUB AL,30H
  MOV AH,00H
  MOV BL,10H
  MUL BL                      ;BL和AL相乘放在AX里
  MOV CL,AL
  MOV AH,01H
  INT 21H
  SUB AL,30H
  MOV AH,00H
  ADD AL,CL
  MOV DS:[BP],AL;存入NUMBER中
  CMP AL,24H;判断是否与¥一样
  JZ LP0
  INC BP
  INC BL
  JMP INPUT

LP0:
  LEA SI,NUMBER
  INC SI                                 ;SI-1
  MOV CL,[SI]                            ;输入个数->CL
  DEC CL
  INC SI
  MOV BX,SI                              ;外循环初始化SI=BX,CH=CL
  MOV CH,CL
  MOV AL,[BX]

LP1:
  INC BX
  CMP [BX],AL                             ; [BX]-AL是否有近位 即CF=1
  JNC LP2
  XCHG AL,[BX]

LP2:
  DEC CH
  JNZ LP1                                  ;不为零跳转
  CMP CH,'0'
  JE LP3

LP3:
  MOV [SI],AL
  INC SI
  DEC CL
  JNZ LP0
  CMP CL,'0'
  JE LP4

LP4:
  MOV AL,'$'                                  ;代表‘ONPUT NUMBER’字符串
  MOV [SI+1],AL
  LEA DX,TAB
  MOV AH,09H
  INT 21H

  LEA DX,LIST2
  MOV AH,09H
  INT 21H
  LEA DX,TAB
  MOV AH,09H
  INT 21H

  MOV DX,OFFSET NUMBER                          ;将NUMBER的偏移地址给DX
  INC DX
  INC DX
  MOV AH,09H
  INT 21H
  MOV AH,4CH
  INT 21H

CODE ENDS
  END START


1个回答

caozhy
caozhy   Ds   Rxr 2017.04.16 21:09
Csdn user default icon
上传中...
上传图片
插入图片