设内部RAM首址为30H的10个单元中存放了一组ASCII码值,试编程按照从小到大的顺序排队后送内部RAM首址为
答案:1 悬赏:0 手机版
解决时间 2021-04-13 02:40
- 提问者网友:富士山上尢
- 2021-04-12 18:25
设内部RAM首址为30H的10个单元中存放了一组ASCII码值,试编程按照从小到大的顺序排队后送内部RAM首址为
最佳答案
- 五星知识达人网友:拾荒鲤
- 2021-04-12 18:58
CODE SEGMENT
ASSUME CS:CODE
ORG 30H
ARRAY DB 'azxsw23edc'
NUM DW 10
ORG 40H
ARR1 DB 12 DUP(0)
ORG 50H
ARR2 DB 12 DUP(0)
START:
PUSH CS
POP DS
PUSH CS
POP ES
LEA SI,ARRAY
LEA DI,ARR1
MOV CX,NUM
CLD
REP MOVSB
LEA SI,ARRAY
LEA DI,ARR2
MOV CX,NUM
REP MOVSB
LEA SI,ARR1
MOV CX,NUM
CALL SORTUP
LEA SI,ARR1
MOV CX,NUM
CLD
@2:
LODSB
MOV DL,AL
MOV AH,2
INT 21H
LOOP @2
CALL LFCR
;=====================
LEA SI,ARR2
MOV CX,NUM
CALL SORTDOWN
LEA SI,ARR2
MOV CX,NUM
CLD
@3:
LODSB
MOV DL,AL
MOV AH,2
INT 21H
LOOP @3
MOV AH,4CH
INT 21H
;===============================
; 单个字符串(或者字节数组)内部的排序(冒泡排序)
SORTUP PROC NEAR
; 串长度置入cx,串首地址置入 si
PUSH AX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSHF
PUSH CX
POP DX
DEC DX
@SORTL1:
MOV CX,DX
MOV DI,SI
@SORTL2:
MOV AL,[DI+1]
CMP AL,[DI]
JA @SORTNEXT ; 无符号 升序
XCHG AL,[DI]
MOV [DI+1],AL
@SORTNEXT:
INC DI
LOOP @SORTL2
DEC DX
JNZ @SORTL1
POPF
POP DI
POP SI
POP DX
POP CX
POP AX
RET
SORTUP ENDP
;===============================================================
; 单个字符串(或者字节数组)内部的排序(冒泡排序)
SORTDOWN PROC NEAR
; 串长度置入cx,串首地址置入 si
PUSH AX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSHF
PUSH CX
POP DX
DEC DX
@SORTDL1:
MOV CX,DX
MOV DI,SI
@SORTDL2:
MOV AL,[DI+1]
CMP AL,[DI]
JB @SORTDNEXT ; 无符号 降序
XCHG AL,[DI]
MOV [DI+1],AL
@SORTDNEXT:
INC DI
LOOP @SORTDL2
DEC DX
JNZ @SORTDL1
POPF
POP DI
POP SI
POP DX
POP CX
POP AX
RET
SORTDOWN ENDP
;==================================
LFCR PROC NEAR
PUSH AX
PUSH DX
MOV AH,2
MOV DL,13
INT 21H
MOV DL,10
INT 21H
POP DX
POP AX
RET
LFCR ENDP
;================================
CODE ENDS
END START
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯