Программирование в двоичных кодах
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
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>