鱼C论坛

 找回密码
 立即注册
查看: 2040|回复: 4

排序编程求指导

[复制链接]
发表于 2012-11-12 19:41:19 | 显示全部楼层 |阅读模式
1鱼币
小甲鱼,我看到了20了,可是在另一本教材上遇到一个问题,不知道如何编,希望小甲鱼指导一下。问题:在以BUF为首址的字存储区中存放有N个带符号数,现要将它们按由大到小的顺序排列后存放回原存储区中,如何编程呢?

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-16 11:12:06 | 显示全部楼层
这个我喜欢。。。。等下写后上传!嘿嘿!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-16 17:28:47 | 显示全部楼层
assume cs:code,ds:data
data segment
    dw 12,3,56,58,6,32,20,5
s_s dw 16 dup (0)
data ends

code segment
start:
            mov ax,data
            mov ds,ax
            mov ax,0b800h
            mov es,ax
            
            mov bx,0
            mov si,0
            mov di,0
            
            ;-------------------寄存器初始化
            call dtoc
            call show_str
            ;-------------------显示未排序字符
            mov cx,8
;xh:         call paixu
;            loop xh
            ;--------------------排序完成
            call dtoc
            call show_str
            ;--------------------显示已排序字符
            mov ah,01
            int 21h
;P
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-16 18:32:14 | 显示全部楼层
未命名.jpg
记得结贴给分哈
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-16 18:33:57 | 显示全部楼层
  1. assume cs:code,ds:data
  2. data segment
  3. dw 12,3,56,58,6,32,20,5
  4. s_s dw 16 dup (0)
  5. data ends

  6. code segment
  7. start:
  8. mov ax,data
  9. mov ds,ax
  10. mov ax,0b800h
  11. mov es,ax

  12. mov bx,0
  13. mov si,0
  14. mov di,0

  15. ;-------------------寄存器初始化
  16. call dtoc
  17. call show_str
  18. ;-------------------显示未排序字符
  19. mov cx,7
  20. p_p: call paixu
  21. loop p_p
  22. ;--------------------排序完成
  23. call dtoc
  24. mov di,160
  25. call show_str
  26. ;--------------------显示已排序字符
  27. mov ah,01
  28. int 21h

  29. ;========================Show_str显示字符↓========================
  30. show_str:
  31. push si
  32. push di
  33. push bx
  34. ;---------------------保存寄存器数据
  35. mov bx,offset s_s
  36. s_l: mov al,ds:[bx]
  37. cmp al,0
  38. je s_esc
  39. mov es:[di],al
  40. inc di
  41. mov es:[di],2
  42. inc di
  43. inc bx
  44. jmp s_l
  45. s_esc: pop bx
  46. pop di
  47. pop si
  48. ret
  49. ;=========================DToC字符换ASCII↓===========================
  50. dtoc: ;把DATA数据中的8WROD数据转成
  51. ;字符,一次一个,循环8次
  52. ;写到要要s_s空间中,以0结尾
  53. push bx
  54. push cx
  55. push si
  56. push di
  57. push bp

  58. mov bx,10
  59. ;---------------------除数
  60. xor di,di ;0
  61. xor bp,bp
  62. mov cx,8
  63. mov bp,offset s_s
  64. d_zxh: mov ax,ds:[si]

  65. ;---------------------主循环

  66. push cx

  67. xor dx,dx
  68. d_xh: div bx
  69. ;cmp al,0
  70. ;je d_esc
  71. add dx,30h
  72. inc di

  73. push dx
  74. xor dx,dx
  75. cmp al,0
  76. jne d_xh

  77. d_esc:

  78. mov cx,di
  79. d_cz: pop ax
  80. mov ds:[bp],ax

  81. add bp,1
  82. loop d_cz
  83. mov byte ptr ds:[bp],3
  84. add bp,1
  85. xor di,di

  86. pop cx
  87. add si,2
  88. loop d_zxh
  89. pop bp
  90. pop di
  91. pop si
  92. pop cx
  93. pop bx
  94. ret
  95. ;=========================PAIXU排序↓=============================
  96. paixu:
  97. push si
  98. push cx
  99. mov cx,7
  100. xh:

  101. mov ax,ds:[si]
  102. mov dx,ds:[si]2
  103. cmp ax,dx
  104. ja p_jh
  105. jmp p_esc
  106. p_jh: mov ds:[si]2,ax
  107. mov ds:[si],dx
  108. p_esc:





  109. add si,2
  110. loop xh
  111. pop cx
  112. pop si
  113. ret ;
  114. code ends
  115. end start
复制代码

纯手写的哦~~
多给些分我也不会介意!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 21:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表