Рубрики

8086 программа для сортировки целочисленного массива в порядке возрастания

Проблема — Напишите программу в микропроцессоре 8086 для сортировки чисел в порядке возрастания в массиве из n чисел, где размер «n» хранится по адресу памяти 2000: 500, а числа сохраняются по адресу памяти 2000: 501.

Пример —

Пример объяснения:

  • Pass-1: F9 F2 39 05 F2 F9 39 05 F2 39 F9 05 F2 39 05 F9 (1 номер получил исправление)
  • Pass-2: F2 39 05 F9 39 F2 05 F9 39 05 F2 F9 (2-й номер получил исправление)
  • Pass-3: 39 05 F2 F9 05 39 F2 F9 (отсортировано)

Алгоритм —

  1. Загрузить данные со смещения 500 в регистр CL (для подсчета).
  2. Перейдите от начальной ячейки памяти к последней и сравните два числа, если первое число больше второго, затем поменяйте их местами.
  3. Первый проход фиксирует позицию для последнего номера.
  4. Уменьшить счет на 1.
  5. Снова перейдите от начальной ячейки памяти к (last-1, с помощью счетчика) и сравните два числа, если первое число больше второго, затем поменяйте их местами.
  6. Второй проход исправить положение для последних двух чисел.
  7. Repeate.

Программа —

MEMORY ADDRESSMNEMONICSCOMMENT
400MOV SI, 500SI<-500
403MOV CL, [SI]CL<-[SI]
405DEC CLCL<-CL-1
407MOV SI, 500SI<-500
40AMOV CH, [SI]CH<-[SI]
40CDEC CHCH<-CH-1
40EINC SISI<-SI+1
40FMOV AL, [SI]AL<-[SI]
411INC SISI<-SI+1
412CMP AL, [SI]AL-[SI]
414JC 41CJUMP TO 41C IF CY=1
416XCHG AL, [SI]SWAP AL AND [SI]
418DEC SISI<-SI-1
419XCHG AL, [SI]SWAP AL AND [SI]
41BINC SISI<-SI+1
41CDEC CHCH<-CH-1
41EJNZ 40FJUMP TO 40F IF ZF=0
420DEC CLCL<-CL-1
422JNZ 407JUMP TO 407 IF ZF=0
424HLTEND

Пояснение —

  1. MOV SI, 500 : установите значение SI на 500.
  2. MOV CL, [SI] : загрузить данные из смещения SI в регистр CL.
  3. DEC CL : уменьшить значение регистра CL BY 1.
  4. MOV SI, 500 : установите значение SI на 500.
  5. MOV CH, [SI] : загрузить данные из смещения SI в регистр CH.
  6. DEC CH : уменьшить значение регистра CH BY 1.
  7. INC SI : увеличить значение SI на 1.
  8. MOV AL, [SI] : загрузить значение из смещения SI в регистр AL.
  9. INC SI : увеличить значение SI на 1.
  10. CMP AL, [SI] : сравнивает значение регистра AL и [SI] (AL- [SI]).
  11. JC 41C : перейти к адресу 41C, если генерируется перенос.
  12. XCHG AL, [SI] : обменять содержимое регистров AL и SI.
  13. DEC SI : уменьшить значение SI на 1.
  14. XCHG AL, [SI] : обменять содержимое регистров AL и SI.
  15. INC SI : увеличить значение SI на 1.
  16. DEC CH : уменьшить значение регистра CH на 1.
  17. JNZ 40F : перейти к адресу 40F, если сброс нулевого значения.
  18. DEC CL : уменьшить значение регистра CL на 1.
  19. JNZ 407 : перейти к адресу 407, если сброс нулевого уровня.
  20. HLT : остановись.

Рекомендуемые посты:

8086 программа для сортировки целочисленного массива в порядке возрастания

0.00 (0%) 0 votes