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

 

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

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












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

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















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.

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

А)

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

/16133

/16011


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

Проверка:


*16=16+3=19


Б)

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

/16133

/16011


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

Проверка:


*16=32+1=33


В)

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

/16599

/16055


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

Проверка:


*16=80+9=89


Г)

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

/16151515

/16015F


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

Проверка:


*16=240+15=255


Д)

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

/162551515

/16151515

/16015F


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

Проверка:


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


Е)


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

63398/16396266

3962/1624710A

247/161577

15/1600F


Шестнадцатеричное представление для десятичного 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АН с содержимым регистра АХ.

А) Б)

В829460A3600

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

а) пересылает значения 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 26FLDA 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,320cmp 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 dx,3mov ax,+4mov cx,0cmp cx,0mov ax,+4

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,11100011BOONO,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,10111001mov dx,10111001 mov dx,10111001

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

Г)Д) Е)

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

Mov cl,03mox cl,03 mox cl,03dl,1ROR 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,1SHL AX,1

RCL DX,1RCR DX,1SHL BX,1 DX,1RCR DX,1RCL 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

LEA DX,DISAREA

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,30hmov al,001111mov bl,18hmov al,110001

shl al,1mov bl,11100011

mul al,bl

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

  1. определения однобайтовых элементов (директива DB) по имени FLDА, содержащего 28Н, и по имени FLDB, содержащего 14h;
  2. определения двухбайтового элемента (директива DW) по имени FLDC, не имеющего значения;
  3. пересылки содержимого поля FLDA в регистр AL и сдвига на один бит;
  4. умножения содержимого регистра AL на значение в поле FLDB (MUL FLDB);
  5. пересылки результата из регистра AX в поле FLDC.

A)B)C)D)

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

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

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

E)

mov ax,120

mov FLDS,ax

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

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

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

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

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

Int 10h

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

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

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

А)

c10mul proc

mov ax,datax

imul datay

ret

c10mul endp

Б)

eioxmulproc

movax,datax+2

muldatay

movproduct+4,ax

mov product+2,dx

movax,datax

Muldatay

addproduct+2,ax

adcproduct,dx

ret

eioxmulendp

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

Делитель: - 1

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

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

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



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

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

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


А)

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

*188

*10 20 14

*100 30012C

*1000 60001770

*10000 400009C40

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


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

STOKTBL DB 1SUNDAY

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

call g10clse

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


Факультет Довузовского Образования Сибирского института школы бизнеса и информационных технологий Итоговый тес

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ