x86课程作业-第一次

一、

[要求] 对数组实施降序排序

[源程序]

STACK1 SEGMENT PARA STACK
STACK_AREA DW 100H DUP(?)
STACK_BTM EQU $ - STACK_AREA
STACK1 ENDS

DATA1 SEGMENT
TABLE_LEN DW 18
TABLE DW 200,300,400,10,20,0,1,8
      DW 41H,40,42H,50,60,0FFFFH,2,3
      DW 615H,7710H
RESULT DB 5 DUP(?),20H,'$'
NEW_LINE DB 0DH,0AH,'$'
DATA1 ENDS

CODE1 SEGMENT
      ASSUME CS:CODE1,DS:DATA1,SS:STACK1
MAIN  PROC FAR
start:
      MOV AX,STACK1
      MOV SS,AX
      MOV SP,STACK_BTM
      MOV AX,DATA1
      MOV DS,AX

LP1:  MOV BX,1
      MOV CX,TABLE_LEN
      DEC CX
      MOV SI,OFFSET TABLE

LP2:  MOV AX,[SI]
      CMP AX,[SI+2]
      JAE CONTINUE
      XCHG AX,[SI+2]
      
      MOV  [SI],AX
      MOV  BX,0
CONTINUE: ADD  SI,2
      LOOP LP2
      CMP  BX,1
      JZ   EXIT
      JMP  SHORT LP1

EXIT: MOV  AX,4C00H
      INT  21H
MAIN  ENDP
CODE1 ENDS  
      END MAIN

[运行截图]

二、

[要求] 在一的基础上,十六进制显示排序结果

[源程序]

STACK1 SEGMENT PARA STACK
STACK_AREA DW 100H DUP(?)
STACK_BTM EQU $ - STACK_AREA
STACK1 ENDS

DATA1 SEGMENT
TABLE_LEN DW 18
TABLE DW 200,300,400,10,20,0,1,8
      DW 41H,40,42H,50,60,0FFFFH,2,3
      DW 1506H,1077H
RESULT DB 5 DUP(?),20H,'$'
NEW_LINE DB 0DH,0AH,'$'
DATA1 ENDS

CODE1 SEGMENT
      ASSUME CS:CODE1,DS:DATA1,SS:STACK1
MAIN  PROC FAR
start:
      MOV AX,STACK1
      MOV SS,AX
      MOV SP,STACK_BTM
      MOV AX,DATA1
      MOV DS,AX

LP1:  MOV BX,1
      MOV CX,TABLE_LEN
      DEC CX
      MOV SI,OFFSET TABLE

LP2:  MOV AX,[SI]
      CMP AX,[SI+2]
      JAE CONTINUE
      XCHG AX,[SI+2]
      
      MOV  [SI],AX
      MOV  BX,0
CONTINUE: ADD  SI,2
      LOOP LP2
      CMP  BX,1
      JZ   DISPLAY
      JMP  SHORT LP1

DISPLAY:
      MOV CX,TABLE_LEN
      MOV SI,OFFSET TABLE
LP3:  PUSH CX
      MOV CX,5
      MOV DI,OFFSET RESULT+4
      MOV AX,[SI]
      MOV BX,10H 
LP3_1: NOP
      XOR DX,DX
      DIV BX
      CMP DL,10
      JAE ALPHA
      OR DL,30H
      JMP STORE
ALPHA:
      ADD DL,87
STORE:
      MOV [DI],DL
      DEC DI
      LOOP LP3_1

      MOV DX,OFFSET RESULT
      MOV AH,9
      INT 21H
      INC SI
      INC SI
      POP CX
      LOOP LP3

      MOV DX,OFFSET NEW_LINE
      MOV AH,9
      INT 21H

EXIT: MOV  AX,4C00H
      INT  21H
MAIN  ENDP
CODE1 ENDS  
      END MAIN

三、

[要求] 在一的基础上十进制显示排序结果

[源程序]

STACK1 SEGMENT PARA STACK
STACK_AREA DW 100H DUP(?)
STACK_BTM EQU $ - STACK_AREA
STACK1 ENDS

DATA1 SEGMENT
TABLE_LEN DW 18
TABLE DW 200,300,400,10,20,0,1,8
      DW 41H,40,42H,50,60,0FFFFH,2,3
      DW 1506,1077
RESULT DB 5 DUP(?),20H,'$'
NEW_LINE DB 0DH,0AH,'$'
DATA1 ENDS

CODE1 SEGMENT
      ASSUME CS:CODE1,DS:DATA1,SS:STACK1
MAIN  PROC FAR
start:
      MOV AX,STACK1
      MOV SS,AX
      MOV SP,STACK_BTM
      MOV AX,DATA1
      MOV DS,AX

LP1:  MOV BX,1
      MOV CX,TABLE_LEN
      DEC CX
      MOV SI,OFFSET TABLE

LP2:  MOV AX,[SI]
      CMP AX,[SI+2]
      JAE CONTINUE
      XCHG AX,[SI+2]
      
      MOV  [SI],AX
      MOV  BX,0
CONTINUE: ADD  SI,2
      LOOP LP2
      CMP  BX,1
      JZ   DISPLAY
      JMP  SHORT LP1

DISPLAY:
      MOV CX,TABLE_LEN
      MOV SI,OFFSET TABLE
LP3: PUSH CX
      MOV CX,5
      MOV DI,OFFSET RESULT+4
      MOV AX,[SI]
      MOV BX,10 
LP3_1: NOP
      XOR DX,DX
      DIV BX
      OR DL,30H
      MOV [DI],DL
      DEC DI
      LOOP LP3_1

      MOV DX,OFFSET RESULT
      MOV AH,9
      INT 21H
      INC SI
      INC SI
      POP CX
      LOOP LP3

      MOV DX,OFFSET NEW_LINE
      MOV AH,9
      INT 21H

EXIT: MOV  AX,4C00H
      INT  21H
MAIN  ENDP
CODE1 ENDS  
      END MAIN
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值