Программирование в двоичных кодах

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

66HLT

 

Содержимое ячеек до выполнения программы:

АдресСодержимое200001201200

Содержимое ячеек после выполнения программы:

 

АдресСодержимое200000201201

Программа №4

 

Сложение содержимого регистра с содержимым ячейки памяти

 

АдресаКомандыМнемоника командКомментарии000041LXI H001200B2002000B3003076MVI AНепосредственная загрузка А одним

одним из слагаемых004010B2005206ADD MСложение содержимого А с содержимым ячейки памяти006167MOV M,A007166HLT

Содержимое ячеек до выполнения программы:

АдресСодержимое200100

Содержимое ячеек после выполнения программы:

АдресСодержимое200110

Программа №4.1

 

Сложение двоично-десятичных чисел.

 

АдресаКомандыМнемоника командКомментарии000041LXI H001200B2002000B3003076MVI A004010B2005206ADD M(A)+(M)(A)006047DAAДесятичная коррекция007167MOV M,A010166HLT

Содержимое ячеек до выполнения программы:

АдресСодержимое200051 (29)

Содержимое ячеек после выполнения программы:

АдресСодержимое200067 (37)

Программа №4.2

 

Вычитание двоично-десятичных чисел

 

АдресаКомандыМнемоника команд000041LXI H001200B2002000B3003006MVI B004B2005076MVI A00623199007220SUB B010074INR A011206ADD012047DAA013167MOV M,A014166HLT

Содержимое ячеек до выполнения программы:

АдресСодержимое200045 (25)Содержимое ячеек после выполнения программы:

АдресСодержимое200007 (07)

Программа №5

 

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

АдресаКомандыМнемоника командКомментарии000006MVI B001200B2002076MVI A003001B2004250XRAСложение по mod2 содержимого А и В.005027RALЦиклический сдвиг влево через перенос.006061LXI SP007202B2010000B3011365PUSH PSWЗапоминание в стеке Слова Состояния Программы.012166HLT

Анализ значений Слова Состояния Программы

 

Мнемоника командыЗначение PSW(A)РгFMVI B 200xxxxxxxxxx0x0x1xMVI A 00100000001xx0x0x1xXRA B1000000110000110RAL0000001010000111LXI SP 202 0000000001010000111PUSH PSW0000001010000111HLT0000001010000111

Содержимое ячеек после выполнения программы:

АдресСодержимое200207201002

Программа №6

 

Обнуление области памяти. Программа пересылает нулевое содержимое какого либо регистра в ячейку памяти.

 

АдресаКомандыМнемоника командКомментарий000227SUB AОбнуление А001041LXI H002011B2003000B3004167MOV M,AОбнуление ячейки памяти по адресу HL005043INX HАдрес следующей ячейки006303JMPБезусловный переход по адресу007004B2мл.байт010000B3ст.байт

Содержимое ячеек до выполнения программы:

АдресСодержимое011Xxx...Xxx040Xxx

Содержимое ячеек после выполнения программы:

АдресСодержимое011000...000040000

Программа №7

 

Режим задания команд с клавиатуры

АдресаКомандыМнемоника команд100 200166HLT

 

Задание с клавиатуры

КомандыМнемоника команд303JMP200B2100B3

 

Программа №8

 

Условные переходы. Программа позволяет изучить действие условных переходов. По адресу H=000,L=200 запишем число 002(соответствует нулевому значению всех флагов в регистре признаков), а по адресу H=000,L=004 число 302(код команды условного перехода по ненулевому результату JNZ).

АдресаКомандыМнемоника командКомментарии000061LXI SP001200B2002000B3003361POP PSWИзвлечение из стека ССП004**(JNZ,JZ,JNC,JC,JPO,JPE,JP,JM)005000B2006000B3007166HLT200**-201000-

Варианты выполнения программы

ПризнакДанные по адресу 004Данные по адресу 200Переход к адресу 000302 (JNZ)002 (z=0)Естьноль302 (JNZ)102 (z=1)Нет312 (JZ)102 (z=1)Есть322 (JNC)002 (c=0)Естьперенос322 (JNC)003 (c=1)Нет332 (JC)003 (c=1)Есть342 (JPO)002 (p=0)ЕстьЧетность342 (JPO)006 (p=1)Нет352 (JPE)006 (p=1)Есть362 (JP)002 (s=0)ЕстьЗнак362 (JP)202 (s=1)Нет372 (JM)202 (s=1)Есть

Программа №12

 

Выбор максимального элемента массива.

 

АдресКомандаМнемоника командыКомментарий000041LXI H001100B1002000B2003016MVI CЗагрузка переменной цикла004005B2005176MOV A,MЗагрузка в А первого элемента 006043INX HПереход к следующему элементу007276CMP MЕсли А>М С=0

А<М С=1010332JCЕсли А<М меняем местами011014B2012000B3013176MOV A,MПеренос в А нового максимума014015DCR CУменьшение переменной цикла015302JNZЕсли переменная цикла не равна 0 то все сначала

016006B2017000B3020062STAСохранение результата в памяти021150B2022000B3023166HLTКонец

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.Выполнение индивидуальных заданий

 

Программа №1

 

Упорядочить пятнадцать элементов массива по возрастанию.

 

АдресКомандыМнемоника командыКомментарии000016MVI CЧисло прохождений внешнего цикла 15-1=14=16(8)001016B2002041LXI HЗагрузка адреса первого элемента массива003 100B2004000B3005026MVI DЧисло сравнений внутри главного цикла006016B2007106MOV B,MСохр. Первый из сравниваемых элементов в B010043INX HФормирование адреса второго ср-ого элемента011176MOV A,MСохранение второго элемента в аккумуляторе012270CMP BСравнение аккумулятора с регистром B.A>B => флаг C=0 и наоборот013322JNCЕсли C=1, то элементы расположены по возрастанию и выполнять перемену их местами не нужно(ком 016-021)014022B2След. Ячейка015000B3Делитель из памяти в В016160MOV M,BПерезапись первого элемента по адресу второго017053DCX HСформировали адрес первого элемента020167MOV M,AСохранили под адресом первого элемента второй021043INX HАдрес первого из сравниваемых в следующем цикле022025DCR DУменьшение переменной внутреннего цикла023302JNZЕсли переменная не равна нулю переход к следующей итерации024007B2025000B3026015DCR CУменьшение переменной внешнего цикла027302JNZЕсли переменная внешнего цикла не равна нулю то переходим к следующей итерации030002B2031000B3032166HLTКонец программы.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Программа №2.

 

Вывод с заде?/p>