Рубрики

8086 программа для выбора сортировки

Проблема — Напишите программу на ассемблере в микропроцессоре 8086 для сортировки заданного массива из n чисел, используя Выбор сортировки.

Допущения — количество элементов в массиве сохраняется со смещением 500. Массив начинается со смещения 501.

Пример —

Алгоритм —

  1. Сначала мы находим наименьшее число в массиве.
  2. Поменяйте местами наименьшее число из первого элемента массива.
  3. Продолжайте повторять процесс, пока все элементы не пройдены.

Программа —

OffsetMnemonicsComment
400MOV DI, 501DI < – 501
403MOV SI, 500SI < – 500
406MOV CL, [SI]CL < – [SI]
408XOR CH, CHCH < – CH ^(XOR) CH
40AINC SISI < – SI+0001
40BDEC CXCX < – CX-0001
40CMOV BX, SIBX < – SI
40EMOV AH, CLAH < – CL
410INC AHAH < – AH+01
412MOV AL, [SI]AL < – [SI]
414INC SISI < – SI+0001
415DEC AHAH < – AH-01
417CMP AL, [SI]AL-[SI]
419JC 41FIf Carry Flag = 1, goto offset 41F
41BMOV AL, [SI]AL < – [SI]
41DMOV BX, SIBX < – SI
41FINC SISI < – SI+0001
420DEC AHAH < – AH-01
422JNZ 417If Zero Flag = 0, goto offset 417
424MOV DL, [BX]DL < – [BX]
426XCHG DL, [DI]DL < – > [DI]
428XCHG DL, [BX]DL < – &gt [BX]
42AINC DIDI < – DI+0001
42BMOV SI, DISI < – DI
42DLOOP 40CCX < – CX-0001; If Zero Flag = 0, goto offset 40C.
42FHLTEnd of program.

Пояснение — Регистры AH, AL, BX, CX, DL, SI, DI используются для общего назначения:

AL - Stored the smallest number
AH - Stores the counter for the inner loop
BX - Stores the offset of the smallest 
     number of each iteration of the outer loop
CX - Stores the counter for the outer loop
DL - Helps in swapping the elements
SI - Pointer
DI - Pointer 
  1. MOV SI, 500: магазины 0500 в SI.
  2. MOV CL, [SI]: сохраняет содержимое со смещением SI в CL.
  3. XOR CH, CH: сохраняет результат логической операции XOR b / w CH и CH в CH.
  4. INC SI: увеличить значение SI на 1.
  5. DEC CX: уменьшить значение CX на 1.
  6. MOV AH, CL: сохраняет содержимое CL в AH.
  7. CMP AL, [SI]: сравнивает содержимое AL с содержимым со смещением SI. Если AL <[SI] — устанавливает флаг переноса (т. Е. Флаг переноса = 1).
  8. JC 41F: переход к смещению 041F, если установлен флаг переноса (1).
  9. JNZ 417: переход к смещению 0417, если установлен нулевой флаг (0).
  10. XCHG DL, [BX]: меняет содержимое DL на содержимое со смещением BX.
  11. LOOP 40C: уменьшите значение CX на 1 и проверьте, установлен Zero Flag (1) или нет. Если нулевой флаг сброшен (0), то он переходит на смещение 040C.
  12. HLT: завершает программу.

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

8086 программа для выбора сортировки

0.00 (0%) 0 votes