Языки программирования высокого уровня (Ассемблер)

  • Вид работы:
    Практическое задание
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    278,5 Кб
  • Опубликовано:
    2012-08-26
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Языки программирования высокого уровня (Ассемблер)

Факультет Довузовского Образования

Сибирского института школы бизнеса и информационных технологий










Итоговый тест

Предмет: Языки программирования высокого уровня (Ассемблер)














1. Напишите битовые представления ASCII-кодов для следующих однобитовых символов:

а) Р;

б) р;

в) #;

г) 5.

А)

ASCII символ P - 080 в десятичной


Битовое представление для ASCII кода P - 1010000

Б)

ASCII символ p - 112 в десятичной


Битовое представление для ASCII кода p - 1110000

В)

ASCII символ # - 035 в десятичной


Битовое представление для ASCII кода # - 100011

Г)

ASCII символ 5 - 053 в десятичной


Битовое представление для ASCII кода 5 - 110101

. Напишите битовые представления для следующих чисел:

а) 5; б) 13; в) 21; г) 27.


. Сложите следующие двоичные числа:


. Определите двоичные дополнения для следующих двоичных чисел:


. Определите положительные значения для следующих отрицательных двоичных цифр:


. Определите шестнадцатеричные представления для следующих значений:

а) ASCII-символа 0; - 30h

б) ASCII-символа 7; - 37h

в) двоичного числа 01011101; - D5

г) двоичного числа 01110111. - 77

. Сложите следующие шестнадцатеричные числа:


. Определите шестнадцатеричные представления для следующих десятичных чисел:

а) 19; б) 33; в) 89; г) 255; д) 4095; е) 63398.

Проверь также полученные результаты, преобразовав шестнадцатеричные значения в двоичные и сложив единичные биты.

А)

                     Частное               Остаток      Шестнадцатеричное

/16                         1                          3                 3

/16                         0                          1                 1

Шестнадцатеричное представление для десятичного 19 - число 13

Проверка:

*16=16+3=19

Б)

                     Частное               Остаток      Шестнадцатеричное

/16                         1                          3                 3

/16                         0                          1                 1

Шестнадцатеричное представление для десятичного 33 - число 21

Проверка:

*16=32+1=33

В)

                     Частное               Остаток      Шестнадцатеричное

/16                         5                          9                 9

/16                         0                          5                 5

Шестнадцатеричное представление для десятичного 89 - число 59

Проверка:

*16=80+9=89

Г)

                     Частное               Остаток      Шестнадцатеричное

/16                         15                         15               15

/16                         0                          15               F

Шестнадцатеричное представление для десятичного 255 - число F15


*16=240+15=255

Д)

  Частное               Остаток      Шестнадцатеричное

/16                255                       15               15

/16                         15                         15               15

/16                         0                          15               F

Шестнадцатеричное представление для десятичного 4095 - число FFF

Проверка:

15*16=240+15=255*16=4080+15=4095

Е)

Частное                Остаток      Шестнадцатеричное

  63398/16               3962                     6                 6

  3962/16                247                       10               A

           247/16                  15                         7                 7

                   15/16                    0                          0                 F      

Шестнадцатеричное представление для десятичного 63398 - число F7A6.

Проверка:

*16=240+7=247*16=3952+10=3962*16=63392+6=63398.

. Что представляют собой три типа сегментов, каковы их максимальные размеры и адреса, с которых они начинаются?

Сегмент кодов. Сегмент кодов содержит машинные команды, которые будут выполняться. Обычно первая выполняемая команда находится в начале этого сегмента и операционная система передает управление по адресу данного сегмента для выполнения программы. Регистр сегмента кодов (CS) адресует данный сегмент.

Сегмент данных. Сегмент данных содержит определенные данные, константы и рабочие области, необходимые программе. Регистр сегмента (DS) адресует данный сегмент.

Сегмент стека. Стек содержит адреса возврата как для программы для возврата в операционную систему, так и для вызовов подпрограмм для возврата в главную программу. Регистр сегмента (SS) адресует данный сегмент.

Начальный адрес - 0000.

Максимальный размер - 64 Кб.

. Какие регистры можно использовать для следующих целей:

а) сложения и вычитания; - регистры add и sub

б) подсчета числа циклов; - регистр cx

в) умножения и деления; - регистры (imul, mul) и (idiv, div)

г) адресации сегментов; - регистры cs, ds и ss

д) индикации нулевого результата; - флаги

е) адресации выполняемой команды? - ip

. Что представляют собой два основных типа памяти компьютера и каково их основное назначение?

ПЗУ или ROM (read-only memory) - представляет собой специальную микросхему. Основное назначение: во-первых, (как это следует из названия) используется только для чтения. Во-вторых, поддержка начальной загрузки: при включения питания компьютера ROM выполняет различные проверки и загружает в оперативную память (RAM) данные из системной дискеты (например DOS).

ОЗУ или RAM (Random Access Memory) - оперативная память, которая представляет собой область, где находятся программы и данные при выполнении. Ее назначение - используется для чтения и записи.

. Напишите машинные команды для:

а) пересылки значения 4629Н в регистр АХ;

б) сложения 036АН с содержимым регистра АХ.

А)              Б)

В829460      A3600

. Имеется программа, которая выполняет следующее:

а) пересылает значения 25Н в регистр AL;

б) сдвигает содержимое регистра AL на один бит влево (в результате в AL будет 4A);

в) пересылает значения 15Н в регистр BL;

4г) умножает содержимое регистра AL на содержимое регистра BL.

Какое значение будет в регистре AX после выполнения программы?

Программа:

mov al,10010bl,110101al,bl

14. Напишите результат выполнения следующей программы:

MOVBX,25

ADDBX,30

SHLBX,01

SUBBX,22

Результат: 23

15. Какие команды заставляют Ассемблер печатать заголовок в начале каждой страницы листинга?

Директивы - TITLE и PAGE

. Какие из следующих имен неправильны:

а) PC_AT;

б) $50;

в) @$_Z;

г) 3487;

д) AX?

а), б) и в) корректны; г) неверно, так как начинается с цифры;

д) корректно только при ссылке на регистр AX.

. Каково назначение каждого из трех сегментов: сегмента кода, сегмента данных, сегмента стека?

Назначения сегментов:

Сегмент кода - для выполняемых команд.

Сегмент данных - для определения данных и рабочих областей.

Сегмент стека - для хранения адресов возврата.

. Что конкретно подразумевает директива END, если она завершает:

а) программу; - End

б) процедуру; - Endp

в) сегмент? - Ends

Команда указывает ассемблеру какое действие должен выполнить данный оператор

Директива управляет процессом ассемблирования и формированием листинга.

20. Укажите различия в назначении RET и END.

RET - обеспечивает выход из пользовательской программы и возврата в DOS

END - Завершает программу.

. Для сегментов кода, данных и стека даны имена CDSEG, DATSEG и STKSEG соответственно. Сформируйте директиву ASSUME.

ASSUME - это ассемблерная директива, которая устанавливает для ассемблера соответствие между конкретными сегментами и сегментными регистрами.

ASSUME CS: CDSEG,DS: DATSEG,SS: STKSEG.

22. Напишите три команды для сохранения в стеке регистра DS и нуля.

PUSH DSAX, AXAX

23. Какова длина в байтах для элементов данных, определенных директивами:

а) DW; - 2 байта

б) DD; - 4 байта

в) DT; - 10 байт

г) DB; - 1 байт

д) DQ? - 8 байта

. Определите следующие числовые значения в элементах данных с именами от FLDA до FLDE:

a) четырехбайтового элемента, содержащего шестнадцатеричный эквивалент десятичного числа 115;

б) однобайтового элемента, содержащего шестнадцатеричный эквивалент десятичного числа 25;

в) двухбайтового элемента, содержащего неопределенное значение;

г) однобайтового элемента, содержащего двоичный эквивалент десятичного числа 25;

д) директивы DW, содержащей последовательные значения 16, 19, 20, 27, 30.

А)                       Б)                  В)                 Г)

FLDA DD 73H    FLDA DW 19h   FLDS DW ? FLDA DB 11001

Д)

FLDE DW 16, 19, 20, 27, 30

25. Покажите сгенерированный шестнадцатеричный объектный код для:

а) DB '26' и

б) DB 26.

А)                        Б)

FLDA DB ‘26’     FLDA DB 26

26. Определите ассемблерный шестнадцатеричный объектный код для:

а) DB 26h;

б) DW 2645h;

в) DD 25733Ah;

г) DQ 25733Ah.

А)                                   Б)                             В)                            DB 26h            FLDA DW 2645h             FLDA DD 25733Ah

Г)

FLDA DQ 25733Ah

27. Закодируйте следующие команды с непосредственными операндами:

а) загрузить 320 в регистр АХ;

б) сравнить поле FLDB с нулем;

в) прибавить 40h к содержимому регистра ВХ;

г) вычесть 40h из регистра СХ;

д) сдвинуть содержимое поля FLDB на один бит влево;

е) сдвинуть содержимое регистра СН на один бит вправо.

Напишите команду вызова Ассемблера с параметром получения LST-файла (листинга).

А)                 Б)                  В)                 Г)                     Д)               Е)

mov ax,320 cmp FLDB,0   add bx,40h   sub cx,40h  shl FLDB,1  shr ch,128. Каков максимальный размер СОМ-файла?

Максимальный размер - 64 Кб

. Какие сегменты можно определить в программе, которая будет преобразована в СОМ-файл?

Сегмент кода.

. Определение стека в СОМ-файлах отсутствует. Как ведет себя СОМ-файл с учетом этого обстоятельства?

COM-файл всегда автоматически определяет стек.

. Какое максимальное количество байтов могут обойти команды короткий JMP, LOOP и относительный переход?

. +127 и - 128. Операнд представляет собой однобайтовое значение от 00Н до 7FH (от 0 до + 127) и от 80Н до 0FFH (от - 128 до - 1).

. Напишите программу для вычисления 12 чисел Фибоначчи: 1, 1, 2, 3, 5, 13,. (каждое число представляет собой сумму двух предыдущих чисел).

MOV AX,00

MOV BX,01CX,12DX,00

В20:

ADD AX,BX; Номер в AX

MOV BX,DXDX,AX B20

. Предположим, что регистры AX и BX содержат знаковые данные, а CX и DX - беззнаковые. Определите команды CMP (где необходимо) и команды безусловного перехода для следующих проверок:

а) значение в DX больше, чем в CX?

б) значение в BX больше, чем в AX?

в) CX содержит нуль?

г) было ли переполнение?

д) значение в BX равно или меньше, чем в AX?

е) значение в DX равно или меньше, чем в CX?

А) Б) В) Г) Д)

mov cx,6mov bx,+9cmp cxmov bx,+10dx,cxjmp ax,bxjmp ax,bx

Е)dx,9cx,12 dx,cx

. На какие флаги воздействуют следующие события и какое значение этих флагов:

а) произошло переполнение; - O

б) результат отрицательный; - S

в) результат нулевой; - Z

г) обработка в одношаговом режиме; - T

д) передача данных должна быть справа налево. - D

. Какая разница между кодированием в директиве PROC операнда с типом FAR и с типом NEAR?

Far - дальний, означает использование полного 32-разрядного адреса ("сегмент: смещение")

Near - ближний, означает использование 16-разрядных смещений.

. Каким образом может программа начать выполнение процедуры?

Вызовом CALL

37. В EXE-программе процедура A10 вызывает B10, B10 вызывает C10, а C10 вызывает D10. Сколько адресов, кроме начальных адресов возврата в DOS, содержит стек?

Ответ:

Три (по одному на каждый вызов CALL).

. Предположим, что регистр BL содержит 11100011 и поле по имени BOONO содержит 01111001. Определите воздействие на регистр BL для следующих команд:

а) XOR BL, BOONO;

б) AND BL, BOONO;

в) OR BL, BOONO;

г) XOR BL, 11111111B;

д) AND BL, 00000000B.

А)                                  Б)                             В)bl,11100011           mov bl,11100011           mov bl,11100011BOONO,01111001  mov BOONO,01111001  mov BOONO,0111bl,BOONO         AND bl,BOONO                 OR bl,BOONO

Г)                                                         Д)bl,11100011                                       mov bl,11100011    BOONO,01111001                             mov BOONO,01111001 bl, 11111111B                         AND bl,00000000b

ассемблер сегмент двоичное однобитовый

39. Предположим, что регистр DX содержит 10111001, а регистр CL - 03. Определите содержимое регистра DX после следующих несвязанных команд:

а) SHR DX,1;

б) SHR DX,CL;

в) SHL DX,CL;

г) SHL DL,1;

д) ROR DX,CL;

е) ROR DL,CL;

ж) SAL DH,1.

А)                          Б)                         В)                        

mov dx,10111001 mov dx,10111001 mov dx,10111001      

mov cl,03               mov cl,03             mov cl,03dx,1               SHR dx,cl            SHL dx,cl

Г)                           Д)                        Е)                         

Mov dx,10111001   mov dx,10111001   mov dx,10111001     

Mov cl,03               mox cl,03               mox cl,03 dl,1             ROR dx,cl              ROR dl,cl    

Ж)dx,10111001cl,03 dh,1

40. Используя команды сдвига, пересылки и сложения, умножьте содержимое регистра АХ на 10.

1. Команда сдвига

mov cl,03ax, 20ax,10ax,cl

41. Напишите программу, которая умножает содержимое пары регистров DX: AX на 2. Измените программу для:

а) умножения на 4;

б) деления на 4;

в) умножения 48 бит в регистрах DX: AX: BX на 2.

А)                          Б)                         В)

SHL AX,1            SHL AX,1            SHL AX,1

RCL DX,1            RCR DX,1           SHL BX,1 DX,1             RCR DX,1           RCL DX,1

42. Какие шестнадцатеричные значения строки и столбца соответствуют нижнему правому углу экрана 25х45?

Строка - 18

Столбец - 4F

. Напишите команды для установки курсора по координатам: строка 12, столбец 8.

mov ah,02bh,00dh,12 dh,8

int 10h

. Напишите команды для очистки экрана, начиная с 0-го столбца 12-й строки до 79-го столбца 22-й строки.

mov 0600hal,12bh,07cx,0000dx,79 dx,22

int 10h

. Составьте необходимые элементы данных и команды для вывода запроса "Введите дату (дд/ммм/гг.)". Используйте для вывода функцию базовой версии DOS.

MSSGE   DB   'What Is the date (mm/dd/yy)?',07H,'$'

                        MOV     AH,09                                        

                        MOV     DX,MSSGE     

                        INT        21H

46. Укажите вызовы функций: а) для ввода с клавиатуры; б) вывода на экран (середина 15 строки; очистка строк от 0 до 15); в) вывода на принтер.

А)                                    Б)                                                     В)

MOV  AH,0AH                DISAREA   DB   20 DUP(' ')          INT 05H

LEA  DX,NAMEPAR       MOV  AH,40H 

INT 21H                       MOV  BX,01   

                                 MOV  CX,20       

                                  INT  21H

47. Объясните назначение каждого из следующих файлов:

а) file. ASM; - Файл для ввода программы

б) file. LST; - файл листинга ассемблирования с исходным и объектным кодом

в) file. OBJ; - файл объектного кода

г) file. EXE. - Загрузочный файл, для выполнения программы.

. Напишите две команды для инициализации регистра DS, полагая, что имя сегмента данных DATSEG.

MOV AX,DATSEGDS,AX

49. Составьте ассемблерную программу для:

а) пересылки 30Н (непосредственное значение) в регистр AL;

б) сдвига содержимого регистра AL на один бит влево (команда SHL);

в) пересылки 18Н (непосредственное значение) в регистр BL;

г) умножения регистра AL на BL (команда MUL BL).

А)                 Б)                         В)                        Г)al,30h       mov al,001111      mov bl,18h           mov al,110001

                     shl al,1                                              mov bl,11100011

                                                                             mul al,bl

50. Модифицируйте программу из предыдущего вопроса 51 для:

a) определения однобайтовых элементов (директива DB) по имени FLDА, содержащего 28Н, и по имени FLDB, содержащего 14h;

b)   определения двухбайтового элемента (директива DW) по имени FLDC, не имеющего значения;

c) пересылки содержимого поля FLDA в регистр AL и сдвига на один бит;

d)   умножения содержимого регистра AL на значение в поле FLDB (MUL FLDB);

e) пересылки результата из регистра AX в поле FLDC.

A)                        B)                         C)                        D)

         FLDA OB 28H     FLDA OB 28H     mov FLDA,25      mov al,2

         FLDB DB 14H     FLDB DB 14H     mov al,FLDA        mov FLDB,20

         DB ?                     FLDC DW ?        shl al,1                  imul FLDB,al

E)

mov ax,120

mov FLDS,ax

51. Составьте процедуры для:

а) установки вида курсора, начинающегося на 5-й линии сканирования и заканчивающегося на 12-й линии;

б) прокрутки экрана на 10 строк.

А)                                    Б)ah,01                          mov ax,0610h

Mov ch,5                         mov bh,07cl,12                        mov cx,0000 10h                       mov dx,184fh

                   Int 10h

. Закодируйте команды для умножения (MUL):

а) слова DATAX на слово DATAY;

б) двойного слова, начинающегося по адресу DATAX, на слово DATAY.

А)

c10mul  proc

           mov      ax,datax              

           imul     datay           

           ret

c10mul  endp

Б)

eioxmul   proc

               mov        ax,datax+2

               mul          datay          

               mov        product+4,ax

               mov        product+2,dx

               mov        ax,datax     

               Mul         datay          

               add                   product+2,ax

               adc                   product,dx

               ret

eioxmul  endp

53. Какой делитель, кроме 0, вызывает ошибку переполнения?

Делитель: - 1

. Закодируйте команды для деления (DIV):

а) слова DATAX на 23;

б) двойного слова, начинающегося по адресу DATAX, на слово DATAY.


. Выполните вручную:

а) преобразование ASCII 46328 в двоичный формат (покажите результат в шестнадцатеричном виде);

б) преобразование полученного шестнадцатеричного значения обратно в ASCII-формат.

А)

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

*1                          8                                    8

*10                         20                                     14

*100                       300                                     12C

*10000                   40000                                    9C40

Результат:               46328                                     B4F8

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

STOKTBL                    DB 1’SUNDAY’

                                      DB 2 ‘MONDAY’

                                      DB 3 ‘TUESDAY’

                                      DB 4 ‘WEDNESDAY’

                                      DB 5 ‘THURSDAY’

                                      DB 6 ‘FRIDAY’

                                      DB 7 ‘SATURDAY’

57. Предполагая, что воскресенье равно 1 и что под каждое имя отведено по 11 символов, напишите команды прямого доступа к таблице, определенной в вопросе 60.

   page    60,132

         TITLE   DIRECT  (COM)

          CODESG  SEGMENT PARA 'Code'

                 ASSUME  CS:CODESG,DS:CODESG,ES:CODESG

                 ORG     100H

         BEGIN:  JMP     SHORT MAIN

         ; ------------------------------------------------

         THREE   DB      3

         MONIN   DB      '11'

         ALFMON  DB      '???','$'

         MONTAB  DB      'MON','TUE','WED','THU','FRI','SAT'

                 DB      'SUN'

         ; ------------------------------------------------

         MAIN    PROC    NEAR             

                  CALL    C10CONV        

                  CALL    D10LOC        

                 CALL    F10DISP         ­

                  RET

         MAIN    ENDP

58. Напишите функции базовой версии DOS для следующих операций:

а) создание файла; -  mov ah, 16h

lea dx, FCBname
int 21h

б) установка DTA; - mov ah, 1ah

lea dx, DTAname

int 21h

в) последовательной записи; -  mov ah,15

lea dx, FCBname

int 21h

г) открытие файла; - MOV Ah, OFH

LEA DX,FCBname

INT 21h

д) последовательного чтения. -  MOV AH, 14H

 LEA DX,FCBname

INT 21h

59. Напишите программу, которая создает дисковый файл.

;       page    60,132

;--------------------------------------

stacksg segment para stack 'stack'

                      dw      80 dup(?)ends

;-------------------------------------- segment para 'data'

reclen        equ     32label   byte                           

maxlen       db      reclen                          db      ?                             db      reclen dup(' ')                 label   byte                                db      04                         db      'namefile'                     db      'dat'                                dw      0000                             dw      ?                            dd      ?                     

                       dw      ?                      

                       dt      ?                             db      00                     

                       dd      ?                      

crlf              db      13,10,'$'

errcde        db      00         db      'name? ','$'

row              db      01 db      '*** open error ***',   '$' db      '*** write error ***',  '$'ends

;-------------------------------------- segment para 'code'  proc     far cs:codesg,ds:datasg,ss:stacksg,es:datasg

       push     ds

       sub      ax,ax

       push     ax

       mov      ax,datasg

       mov      ds,ax

       mov      es,ax

       mov      ax,0600h

       call     q10scr  

       call     q20curs

       call     c100pen

       cmp      errcde,00

       jz        a20loop        

       retloop:

       call     d10proc

       cmp      namelen,00  

       jne      a20loop

       ret   

begin   endp

60. Напишите программу, которая выводит файл на экран.

c100pen proc     near

       mov      ah,16h                    

       lea      dx,fcbrec

       int      21h

       cmp      al,00                       

       jnz      c20                                    

  mov      fcbrcsz,reclen         

  lea      dx,namedta               

  mov      ah,1ah

  int      21h

  ret:

  lea      dx,opnmsg                

  call     x10err

  ret

c100pen endp

61. Закодируйте два макроопределения для умножения:

а) MULTBY должна генерировать код для умножения байта на байт;

б) MULTWD должна генерировать код для умножения слова на слово.

Для множителя и множимого используйте в макроопределении формальные параметры. Напишите небольшую программу, в которой используются соответствующие макрокоманды и определены необходимые области данных.

А)

MULTBY MACRO

                ASSUME CS:CSEG,DS:DSEG,SS:STACK;ES:DSEG

                         PUSH DS

FLDA DB 23DB 21FLDA,FLDB

ENDM

Б)MACRO

                          ASSUME CS:CSEG,DS:DSEG,SS:STACK;ES:DSEG

                          PUSH DS

FLDA DW 12DW 34FLDA,FLDB

ENDM

Похожие работы на - Языки программирования высокого уровня (Ассемблер)

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!