Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
Funzi
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 5
1

Тест на знание ассемблера

12.06.2013, 16:23. Просмотров 3761. Ответов 9
Метки нет (Все метки)

Доброго времени суток, господа!
В этом семестре нам преподавали системное программирование. Я немного не добрал до зачета и, чтобы выплыть, нужно решить некий тест почти безошибочно. Он состоит из утверждений. Нужно поставить +/- в зависимости от их правильности. Я полностью решил его, но боюсь, что, может быть, что-то упустил или недопонял.
Проверьте пожалуйста, буду крайне признателен

1.Мнемоника команды – это символьная запись указания процессору выполнить
определённое действие +
2. Мнемоника команды ассемблера имеет, по крайней мере, три символа -
3. Регистры – собственные ячейки памяти процессора, предназначенные для
кратковременного хранения и обработки данных+
4. Все регистры микропроцессора допускают прямое обращение-
5. Флаг нуля сброшен всегда, если результат предшествующей операции ноль-
6. Флаг знака равен старшему биту результата предшествующей операции +
7. Флаг знака после умножения двух отрицательных чисел всегда будет сброшен+
8. Флаг переполнения устанавливается только в результате выполнения арифметических
операций+
9. В результате выполнения любой арифметической операции устанавливается флаг переноса-
10. Существует команда позволяющая изменять состояние регистра флагов +
11. Результат умножения двух чисел всегда помещается в регистр аккумулятор -
12. Результат операции деления может оказаться в трёх различных регистрах-
13. Результат умножения 16 битных чисел в 32х битном режиме будет находиться в регистре
EAX +
14. Команда умножения может формировать результат с использованием трёх различных
регистров +
15. При выполнении команды деления, могут возникнуть две различные исключительные
ситуации+
16. При выполнении любой команды ассемблера, микропроцессор изменяет состояние
регистра указателя команд +
17. Использование команды LOOP может изменить состояние только одного регистра -
18. Существуют команды условного перехода, анализирующие состояние нескольких флагов +
19. Команда сравнения формирует результат в специальном регистре -
20. Существует команда записи из ячейки памяти в ячейку памяти-
21. Существует специальная мнемоника команды записи из ячейки памяти в ячейку*памяти*-
22. Косвенная адресация осуществляется с помощью заключённых в квадратные скобки
регистров,содержащих адрес памяти +
23. Существует способ адресации, формирующий результат при помощи 3х регистров -
24. Косвенная адресация позволяет динамически назначить адрес операнда для выполнения
команды +
25. Базовая адресация со смещением связана с возможностью масштабирования содержимого
индексного регистра. -
26. Масштабирование допускается использовать только для регистров общего назначения +
27. Масштабирование допускается использовать только для индексных регистров.-
28. Стек микропроцессора заполняется от младших адресов к старшим-
29. Эффективный адрес операнда может находиться в любом из регистров общего назначения +
30. Любая арифметическая команда изменяет состояние флага переноса -
31. Любая арифметическая команда изменяет состояние флага знака-
32. Флаг знака после умножения двух отрицательных чисел всегда будет установлен -
33. В результате выполнения любой арифметической операции устанавливается флаг переноса -
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 16:23
Ответы с готовыми решениями:

Тест на знание C++
Господин Usaga, у меня есть идея. Предлагаю оценить мои знания C++ в деле. Дайте мне какое-нибудь...

Тест на знание Delphi
На знание Delphi то есть мне нужны просто готовые вопросы с ответами чтобы вставить в компонент...

Тест на знание Windows
Разработка гипертекстового документа "Тест на знание Windows"

Тест на знание работы компилятора
Привет, начал проходить курс по С++, и тут ступор. Нужно выбрать буквы верных утверждений : а)...

Прикольный тест на знание Windows 7.
Сабж. Варианты ответов убивают:D http://www.itquiz.ru/Test.aspx

9
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
12.06.2013, 18:25 2
8. - POPF
13. -
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
format PE console 4.0
 
include 'win32a.inc'
    cinvoke crt_printf, entr,_1st
    cinvoke crt_scanf, itpt, buf
    cinvoke crt_printf, entr,_2nd
    cinvoke crt_scanf, itpt, bf2
    xor edx, edx
    imul    dx, word [buf],1000
    mov ecx, [bf2]
    imul    cx, word [buf]
    cinvoke crt_printf, res, edx, ecx
    invoke  crt_getch
        invoke  crt_exit,0
entr    db      'Enter %s number:',0
_1st    db  'first',0
_2nd    db  'second',0
res db  'result of IMUL r16,mem16,#imm16 %d. , imul r16,mem16 %d.',0dh,0ah,'Press <Enter>',0
itpt    db  '%d',0
buf     dd      ?
bf2 dd  ?
; import data in the same section
 data import
 
 library msvcrt,'MSVCRT.DLL'
 
 import msvcrt,\
    crt_scanf,'scanf',\
    crt_printf,'printf',\
        crt_exit,'exit',\
    crt_getch, '_getch'
end data
0
Ab
75 / 75 / 2
Регистрация: 03.05.2012
Сообщений: 161
12.06.2013, 18:26 3
В ассемблере вроде не новичок, но многие вопросы очень скользкие. Например:
17. Использование команды LOOP может изменить состояние только одного регистра -
А регистр флагов, который она тоже меняет, считается регистром? Если да, то "-" правильный, идем дальше.
19. Команда сравнения формирует результат в специальном регистре -
Ну если флаговый регистр считается регистром, то должен быть "+". Идем дальше.
20. Существует команда записи из ячейки памяти в ячейку памяти-
21. Существует специальная мнемоника команды записи из ячейки памяти в ячейку*памяти*-
Что значат звездочки, я так и не понял. Что значит "специальная" мнемоника - тоже. Но команды, несомненно, существуют. Те же MOVS, PUSH [], POP []. Идем дальше.
9. В результате выполнения любой арифметической операции устанавливается флаг переноса-
30. Любая арифметическая команда изменяет состояние флага переноса -
31. Любая арифметическая команда изменяет состояние флага знака-
33. В результате выполнения любой арифметической операции устанавливается флаг переноса -
С "устанавливается" вроде понятно: бит флага становится равным 1, ответы правильные. А что значит "изменяет состояние"? Если до команды флаг был 0 и в результате выполнения команды он стал тоже 0, то это будет считаться изменением состояния?

В общем, тут чуть ли не каждый вопрос можно трактовать всяко разно. Трудновато вам будет этот тест сдавать.
0
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
12.06.2013, 18:52 4
Цитата Сообщение от Ab Посмотреть сообщение
А регистр флагов, который она тоже меняет, считается регистром?
Дык, конечно. Только он не является РОН.
В дополнение к 8. - на 286/386 существовала инструкция LOADALL, которая грузила ВСЕ регистры из памяти. Убрано в 486+.
1
12.06.2013, 18:52
Troll_Face
603 / 403 / 8
Регистрация: 26.04.2012
Сообщений: 2,069
12.06.2013, 19:33 5
Цитата Сообщение от Ab Посмотреть сообщение
А регистр флагов, который она тоже меняет
я сразу подумал про ip\eip

Добавлено через 1 минуту
Цитата Сообщение от Ab Посмотреть сообщение
Трудновато вам будет этот тест сдавать.
если знаешь о чем говоришь - можно обосновать свой ответ и сдать норм
0
Mikl___
Автор FAQ
13485 / 6416 / 635
Регистрация: 11.11.2010
Сообщений: 11,588
13.06.2013, 05:40 6
2. Мнемоника команды ассемблера имеет, по крайней мере, три символа -
jl, jg, je, jz, bt
10. Существует команда позволяющая изменять состояние регистра флагов
Для загрузки значений флагов в регистр EFLAGS и считывания из него предназначены команды LAHF, SAHF, PUSHF, PUSHFD, POPF и POPFD. Есть команды воздействующие на отдельные флаги: CLD, STD, CLC, STC, CMC, CLI, STI, int 3, INT 1(ICEBP)
16. При выполнении любой команды ассемблера, микропроцессор изменяет состояние регистра указателя команд +
например эта команда jmp $
0
Anonimys
202 / 168 / 11
Регистрация: 30.05.2012
Сообщений: 703
13.06.2013, 06:48 7
Цитата Сообщение от Mikl___ Посмотреть сообщение
2. Мнемоника команды ассемблера имеет, по крайней мере, три символа -
Ещё or например.

Добавлено через 2 минуты
Цитата Сообщение от Mikl___ Посмотреть сообщение
10. Существует команда позволяющая изменять состояние регистра флагов
Да, существует. Например, любой вызов Int сбрасывает TF


Цитата Сообщение от Mikl___ Посмотреть сообщение
При выполнении любой команды ассемблера, микропроцессор изменяет состояние регистра указателя команд +
Тогда уж -, потому что при этом джампе процессор остается на одном месте в коде.
1
Mikl___
Автор FAQ
13485 / 6416 / 635
Регистрация: 11.11.2010
Сообщений: 11,588
13.06.2013, 08:50 8
Цитата Сообщение от Anonimys Посмотреть сообщение
Да, существует. Например, любой вызов Int сбрасывает TF
Если быть более точным, то команда INT в REAL-ADDRESS-MODE помещает "старое" значение EFLAGS в стек и сбрасывает флаги TF, IF, AC но потом после выхода из прерывания значения в EFLAGS будут восстановлены, а вот команда IRET может поменять значения EFLAGS кардинально, тем, что мы предварительно поместим в стек
0
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
13.06.2013, 09:31 9
6. - MOV
0
Mikl___
Автор FAQ
13485 / 6416 / 635
Регистрация: 11.11.2010
Сообщений: 11,588
13.06.2013, 10:47 10
6. LEA использовать для сложения/вычитания содержимого регистра с константой можно, а на флаги не влияет

Добавлено через 55 минут
23. Существует способ адресации, формирующий результат при помощи 3х регистров
LEA EBX,[EAX+ECX] == EBX := EAX + ECX
а также при помощи четырех регистров ES, DS, EDI, ESI MOVS
и команда CMPXCHG8B m8byte
Семантика команды: выполнение в одной операции сравнения и обмен 8-байтовых операндов. Команда требует один операнд m8byte и неявным образом использует еще два операнда – пары регистров EDX:EAX и ECX:EBX. В качестве явного операнда команды m8byte может выступать только 64-битная (8-байтовая) ячейка памяти. Команда выполняет сравнение операнда m8byte в памяти с содержимым EDX:EAX. Если сравниваемые значения совпадают, то операнд DEST в памяти замещается 64-битным значением ECX:EBX. Если сравниваемые значения не совпадают, содержимое памяти поступает в пару регистров EDX:EAX, замещая сравниваемый операнд DEST
1
13.06.2013, 10:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 10:47

Пройдите тест на знание ATmega
Я тут сделал тест на знание микроконтроллеров серии ATmega. Если точнее, то программирование МК на...

Тест на знание синтаксиса языка C++
Всем доброго времени суток. Ситуация следующая: спустя много-много лет, решил я таки получить...

Тест на знание работы и устройства процессоров
1.В какой модели процессора впервые была применена суперскалярная архитектура? 2.В каких моделях...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru