МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Микропроцессорные средства и системы

    Микропроцессорные средства и системы

    Министерство Образования Украины

    Кременчугский Государственный Политехнический Институт

    Контрольное задание по дисциплине

    “ Микропроцессорные средства и системы ”

    Вариант № 7

    Группа Э-41-З, студент **********

    Преподаватель : Михальчук В.Н

    Кременчуг 1998

    Контрольная работа № 1

    Преобразовать числа из десятичной системы счисления в двоичную и

    шестнадцатеричную : 5 ; 38 ; 93 ; 175 ; 264.

    |Десятичная система |Двоичная система |Шестнадцатеричная |

    | | |система |

    |5 | |0|0|0|0|0|0|1|0|1| |5 |

    |38 | |0|0|0|1|0|0|1|1|0| |26 |

    |93 | |0|0|1|0|1|1|1|0|1| |5D |

    |175 | |0|1|0|1|0|1|1|1|1| |AF |

    |264 | |1|0|0|0|0|1|0|0|0| |108 |

    Задача № 2

    Преобразовать числа, записанные в прямом двоичном коде в десятичный и

    шестнадцатеричный код : 0011 ; 1000010 ; 00011011000 .

    |Прямой двоичный код |Десятичный |Шестнадцатеричный |

    | |код |код |

    | |0|0|0|0|0|0|0|0|0|1|1| |3 |3 |

    | |0|0|0|0|1|0|0|0|0|1|0| |66 |42 |

    | |0|0|0|1|1|0|1|1|0|0|0| |216 |D8 |

    Задача № 3

    Выполнить следующие арифметические действия с двоичными числами,

    заданными в прямом коде : 0011 + 1000110 ; 10000001 - 1000110

    | | | | | | |0|0|1|1| | | | |3| | |1|0|0|0|0|0|0|1| | |1|2|9|

    | | |+| | | | | | | | | |+| | | |-| | | | | | | | | |-| | | |

    | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

    Задача № 4

    Выполнить следующее арифметическое действие в 8-ми разрядной сетке (

    старший бит содержит знак числа ) : 5 х 25

    | | |0|.|0|0|1|1|0|0|1| | | |2|5| | | | | | | | | | | | | | |

    | |х| | | | | | | | | | | |х| | | | | | | | | | | | | | | | |

    | | |0|.|0|0|0|0|1|0|1| | | | |5| | | | | | | | | | | | | | |

    | | | | |0|0|1|1|0|0|1| | | | | | | | | | | | | | | | | | | |

    | | | |0|0|0|0|0|0|0| | | | | | | | | | | | | | | | | | | | |

    | | |0|0|1|1|0|0|1| | | | | | | | | | | | | | | | | | | | | |

    | | |0|.|1|1|1|1|1|0|1| | |1|2|5| | | | | | | | | | | | | | |

    Контрольная работа № 2

    Задача № 1

    Определить размер памяти в килобайтах ( байтах ), если данная память

    адресуется с адреса A0EDH по адрес EF34H. Одна ячейка памяти занимает 8 бит

    Для решения определим вначале кол-во ячеек памяти, адресуемых одним

    разрядом при 16- теричной системе адресации.

    |4-й |3-й |2-й |1-й |H |

    |разряд |разряд |разряд |разряд | |

    |4096 |256 |16 |1 |H |

    Таким образом, начальный и конечный адреса в десятичной системе будут :

    A0EDH = 4096 * 10 + 256 * 0 + 16 * 14 + 1 * 13 + 1= 41198 ;

    EF34H = 4096 * 14 + 256 * 15 + 16 * 3 + 1 * 4 +1 = 61237 .

    61237 - 41198 = 20039.

    20039 = 19 * 1024 + 583.

    Итак, размер памяти будет 20039 байт или 19 кБ. 583 байт

    Задача № 2

    Символьная строка расположена в ОЗУ начиная с адреса 0006H. Известно, что

    под каждый символ отводится одна ячейка памяти. Число символов в строке =

    731. Определить адрес для обращения к последнему символу строки.

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

    731 + 6 = 737. Переведем 738 из десятичной системы в двоичную :

    73710 = 0010111000012

    Теперь переводим в 16 - теричную : 0010111000012 = 02E116

    Ответ : адрес последнего символа 02E1H

    Задача № 3

    Составить программу на Ассемблере с комментариями :

    Подсчитать число символов в строке, расположенной в области начиная с

    адреса 1000H и заканчивая адресом 2000H без учета пробелов, если известно,

    что каждый символ занимает одну ячейку памяти и пробел кодируется как 01H.

    Максимальное число символов в строке 2000h -1000h=1000h=409610

    После выполнения программы результат будет помещен в HL.

    LXI SP,3000h ; указание вершины стека

    LXI H,1000h ; адрес 1-го элемента => в HL

    LXI D,1000h ; загрузка счетчика в D,E

    XRA A ; обнуление аккумулятора

    STA 2001h ; обнуление счетчика количества символов

    STA 2002h ; обнуление счетчика количества символов

    MVI B,01h ; код пробела => в В

    LOOP:

    MOV A,M ; загрузить символ из ячейки М в аккумулятор

    CMP B ; проверка на код пробела

    JNZ COUNT ; если не совпадает, переход к COUNT, иначе - дальше

    INX H ; адрес следующего символа

    DCX D ; уменьшить счетчик

    JZ EXIT ; если счетчик = 0, на выход

    JMP LOOP ; в начало цикла

    COUNT:

    PUSH H ; выгрузить содержимое HL в стек

    LHLD 2001h ; загрузить HL содержимым счетчика количества

    символов

    INX H ; увеличить счетчик на 1

    SHLD 2001h ; сохранить счетчик количества символов в 2001h,

    2002h

    POP H ; восстановить в HL сохраненный адрес

    RET ; возврат из подпрограммы

    EXIT:

    LHLD 2001h ; загрузить HL содержимым счетчика количества

    символов

    END

    Задача № 4

    Составить программу на Ассемблере, направленную на решение математической

    функции :

    Z = lg(x+1)

    Натуральный и десятичный логарифмы одного и того же числа (в данном случае

    - выражения) связаны простым соотношением, позволяющим переходить от одного

    к другому :

    lg x = Mlnx , где M = 1/ln10 = 0,434294481903252…

    т.е., десятичный логарифм числа x = натуральному логарифму этого же

    числа, умноженному на постоянный множитель M = 0,434294481903252…,

    называемый модулем перехода от натуральных логарифмов к десятичным.

    В соответствии с вышесказанным, lg (x+1) = 0,434294481903252…* ln(x+1)

    Для вычисления ln(x+1) используем разложение в ряд :

    ln(x+1) = x-x2/2+x3/3-x4/4+x5/5-x6/6+x7/7-x8/8+…

    В результате алгоритм решения сводится к четырем арифметическим

    действиям : + ; - ; * ; /.

    Перед выполнением арифметических действий над числами с плавающей

    запятой условимся первое число размещать в регистрах EHL, второе – в

    регистрах DBC; результат операции оставлять в EHL.

    Формат представления чисел с плавающей запятой :

    Где : S – знак числа ( 1-отрицательный, 0-положительный ), P0…P7 – 8-

    битный смещенный порядок, M1 … M15 – мантисса . Скрытый бит целой части

    мантиссы в нормализованных числах содержит 1

    |1000h |X |

    |1001h | |

    |1003h | |

    |1003h |X2 |

    |1004h | |

    |1005h | |

    |1006h |X3 |

    |1007h | |

    |1008h | |

    |1009h |X4 |

    |100Ah | |

    |100Bh | |

    |100Ch |X5 |

    |100Dh | |

    |100Eh | |

    |100Fh |X6 |

    |1010h | |

    |1011h | |

    |1012h |X7 |

    |1013h | |

    |1014h | |

    |1020h |Адрес |

    | |ячейки с |

    | |текущим XN|

    |1021h | |

    |1022h |Текущий N |

    До начала вычислений число Х должно быть размещено в памяти по адресам

    1000h-1002h.

    ;начало цикла вычислений

    CALC1:

    LXI H,1003h ; сохранение адреса первой ячейки

    SHLD 1020h ; для хранения XN

    CALL LOAD ; Загрузка Х в EHL

    ;цикл вычисления XN

    CALC2:

    CALL LOAD1 ;Загрузка Х в DBC

    CALL MULF ; Умножение чисел с плавающей точкой

    MOV B,H ; HL=>BC

    MOV C,L

    LHLD 1020h ;загрузить адрес ячейки памяти для хранения Хn

    MOV M,E ;Хn => в память

    INX H

    MOV M,B

    INX H

    MOV M,C

    INX H

    SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn

    MOV H,B ;BC=>HL

    MOV L,C

    LDA 1021h ;содержимое ячейки => в аккумулятор

    CPI 15h ;если получены все значения Хn,

    JZ CALC3 ;переход на CALC3

    JMP CALC2 ;иначе- в начало

    CALC3:

    LXI H,1022h ;

    MVI M,01h ;загрузить в ячейку 1022h делитель

    LXI H,1003h ;

    SHLD 1020h ;содержимое HL => в память

    ;цикл вычисления XN/N

    CALC4:

    MOV B,H ; HL=>BC

    MOV C,L

    LHLD 1020h ;загрузить адрес ячейки памяти для хранения N

    MOV E,M ;Хn => в регистры

    INX H

    MOV B,M

    INX H

    MOV C,M

    SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn

    MOV H,B ;BC=>HL

    MOV L,C

    PUSH H ;

    LXI H,1022h ;N => в ячейку С

    MOV C,M

    POP H ;

    MVI D,00h

    MVI B,00h

    CALL DIVF ; Деление чисел с плавающей точкой

    MOV B,H ; HL=>BC

    MOV C,L

    LHLD 1020h ;загрузить адрес ячейки памяти для хранения Хn/N

    DCX H ;

    DCX H ;

    MOV M,E ;Хn/N => в память

    INX H

    MOV M,B

    INX H

    MOV M,C

    INX H

    SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn/N

    MOV H,B ;BC=>HL

    MOV L,C

    PUSH H ;

    LXI H,1022h ;N => в ячейку С

    MOV C,M ;инкремент N

    INR C

    MOV M,C

    POP H ;

    LDA 1021h ;содержимое ячейки => в аккумулятор

    CPI 15h ;если получены все значения Хn,

    JZ CALC5 ;переход на CALC5

    JMP CALC4 ;иначе- в начало

    CALC5:

    LXI H,1003h ;

    SHLD 1020h ;

    ;

    CALC6:

    LHLD 1020h ;загрузить адрес ячейки памяти для хранения N

    MOV D,M ;Хn/N => в регистры D,B,C.

    INX H

    MOV B,M

    INX H

    MOV C,M

    INX H

    SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn/N

    ;

    ;вычисление ln(x+1)

    CALC7:

    CALL LOAD ; Загрузка Х в EHL

    CALL SUBF ; Вычитание чисел с плавающей точкой

    CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C.

    CALL ADDF ; Сложение чисел с плавающей точкой

    CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C.

    CALL SUBF ; Вычитание чисел с плавающей точкой

    CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C.

    CALL ADDF ; Сложение чисел с плавающей точкой

    CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C.

    CALL SUBF ; Вычитание чисел с плавающей точкой

    CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C.

    CALL ADDF ; Сложение чисел с плавающей точкой

    CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C.

    MVI D,00h ; загрузка модуля пере-

    MVI B,2Bh ; хода в DBC

    MVI C,2Bh

    CALL MULF ; Умножение ln(x+1) на модуль перехода к lg

    JMP EXIT ; на выход

    ;

    ;загрузка Хn+1/N+1 в регистры D,B,C.

    CALC8:

    PUSH H

    LHLD 1020h ;загрузить адрес ячейки памяти для хранения N

    MOV D,M ;Хn/N => в регистры D,B,C.

    INX H

    MOV B,M

    INX H

    MOV C,M

    INX H

    SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn/N

    POP H ;

    RET ;

    ;

    EXIT:

    HLT ; Останов

    ;

    ;

    ;

    ;Загрузка Х в EHL

    LOAD:

    LXI H,1000h ;загрузка в HL адреса порядка Х

    MOV E,M ;загрузка порядка Х в Е

    LHLD 1001h ;загрузка мантиссы в HL

    RET ;

    ;Загрузка Х в DBC

    LOAD1:

    PUSH H ;выгрузка в стек HL

    LXI H,1000h ;загрузка в HL адреса порядка Х

    MOV D,M ;загрузка порядка Х в D

    INX H ;

    MOV B,M ;

    INX H ;

    MOV C,M ;загрузка мантиссы в BC

    POP H ;загрузка из стека HL

    RET ;

    ;Образование дополнительного кода числа в регистре HL

    comp:

    mov A,H ;

    CMA ;

    MOV H,A ;

    MOV A,L ;

    CMA ;

    MOV L,A ;

    INX H ;

    RET ;

    ;Проверка знака и образование дополнительного кода

    NEG:

    MOV A,E ;

    ORA E ;

    JP NOTDK ;

    CALL COMP ; Образование дополнительного кода числа в регистре HL

    NOTDK: RET ;

    ;Сдвиг содержимого HL вправо на 1 бит:

    SHIFT:

    MOV A,H ;

    RAR ;

    MOV H,A ;

    MOV A,L ;

    RAR ;

    MOV L,A ;

    RET ;

    ;Обмен содержимого регистров EHL и DBC

    SWAP:

    PUSH B ;

    XTHL ;

    POP B ;

    MOV A,D ;

    MOV D,E ;

    MOV E,A ;

    RET ;

    ;Восстановление числа с плавающей точкой

    REC:

    MOV A,H ;

    ADD A ;

    MOV A,E ;

    RAL ;

    MOV E,A ;

    MOV A,H ;

    ORI 80H ;

    MOV H,A ;

    RET ;

    ;Преобразование числа в стандартный формат

    PACK:

    LDA SIGN ;

    ADD A ;

    MOV A,E ;

    MOV D,A ;

    RAR ;

    MOV E,A ;

    MOV A,H ;

    ANI 7FH ;

    MOV H,A ;

    MOV A,D ;

    RRC ;

    ANI 80H ;

    ORA H ;

    MOV H,A ;

    RET ;

    ;Сложение чисел с плавающей точкой

    ADDF:

    MOV A,D ;

    XRA E ;

    JP ADDF1 ;

    MOV A,D ;

    XRI 80H ;

    MOV D,A ;

    JMP SUBF ;

    ;

    ADDF1:

    MOV A,D ;

    ORA B ;

    ORA C ;

    JZ ADDF8 ;

    MOV A,E ;

    ORA H ;

    ORA L ;

    JNZ ADDF2 ;

    CALL SWAP ; Обмен содержимого регистров EHL и DBC

    JMP ADDF8 ;

    ;

    ADDF2:

    MOV A,D ;

    STA SIGN ;

    CALL REC ;

    CALL SWAP ; Обмен содержимого регистров EHL и DBC

    CALL REC ; Восстановление числа с плавающей точкой

    ;

    MOV A,E ;

    SUB D ;

    JNC ADDF3 ;

    CALL SWAP ; Обмен содержимого регистров EHL и DBC

    MOV A,E ;

    SUB D ;

    ;

    ; В EHL большее число, в аккумуляторе разность потенциалов

    ADDF3:

    JZ ADDF6 ;

    CPI 16 ;

    JC ADDF4 ;

    JMP ADDF7 ;

    ;

    ;Можно сдвигать мантиссу меньшего числа

    ADDF4:

    MOV E,A ;

    CALL SWAP ; Обмен содержимого регистров EHL и DBC

    ADDF5:

    ORA A ;

    CALL SHIFT ; Сдвиг содержимого HL вправо на 1 бит:

    INR E ;

    DCR D ;

    JNZ ADDF5 ;

    ;

    ;В регистре Е общий порядок. Можно складывать мантиссы

    ADDF6:

    DAD B ;

    JNC ADDF7 ;

    INR E ;

    JZ ADDF8 ;

    ORA A ;

    CALL SHIFT ; Сдвиг содержимого HL вправо на 1 бит:

    ;

    ADDF7:

    CALL PACK ; Преобразование числа в стандартный формат

    ;

    ADDF8:

    RET ;

    ;

    ;Вычитание чисел с плавающей точкой

    SUBF:

    MOV A,D ;

    XRA E ;

    JP SUBF1 ;

    MOV A,D ;

    XRI 80H ;

    MOV D,A ;

    JMP ADDF ; Сложение чисел с плавающей точкой

    SUBF1:

    MOV A,D ;

    ORA B ;

    ORA C ;

    JZ SUBFA ;

    MOV A,E ;

    ORA H ;

    ORA L ;

    JNZ SUBF2 ;

    CALL SWAP ; Обмен содержимого регистров EHL и DBC

    MOV A,E ;

    XRI 80H ;

    MOV E,A ;

    JMP SUBFA ;

    SUBF2:

    MOV A,E ;

    STA SIGN ;

    CALL REC ; Восстановление числа с плавающей точкой

    CALL SWAP ; Обмен содержимого регистров EHL и DBC

    CALL REC ; Восстановление числа с плавающей точкой

    MOV A,D ;

    SUB E ;

    JNZ SUBF3 ;

    MOV A,B ;

    CMP H ;

    JNZ SUBF3 ;

    MOV A,C ;

    CMP L ;

    JNZ SUBF3 ;

    MVI E,0 ;

    LXI H,0 ;

    JMP SUBFA ;

    Страницы: 1, 2


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.