|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Команды передачи данныхВо всех компьютерах необходимы команды, предназначенные просто для пересылок данных, адресов и непосредственных операндов в регистры или ячейки памяти. В микропроцессоре ВМ86 имеется 4 базовые команды передачи данных. MOV, LEA, LDS, и LTS. В данной работе подробно рассмотрим команду MOV. Остальные команды и их использование при разработке программ будем рассматривать по мере их использования. Команда mov предназначена для пересылок байта или слова внутри ЦП или между ЦП и памятью. Ее формат может занимать от двух до шести байт в зависимости от способа адресации. Мнемоника и формат этой команды на ассемблере имеет вид:
MOV dst,src здесь dst операнд-получатель, src операнд-источник.
В зависимости от режима адресации эта команда может передавать информацию: из регистра в регистр: непосредственный операнд в регистр; непосредственный операнд в ячейку памяти; из ячейки памяти в регистр; из регистра в ячейку памяти: из регистра (ячейки памяти) в сегментный регистр (кроме регистра cs); из сегментного регистра в регистр или ячейку памяти. При выполнении команд передачи данных не изменяется ни один из флажков (кроме специальных команд пересылки). Существует ряд особенностей использования команды MOV. Во-первых, нельзя одной командой передать содержимое одной ячейки памяти в другую. Во-вторых, невозможно за одну операцию загрузить непосредственный операнд в сегментный регистр. В-третьих, нельзя непосредственно пересылать содержимое одного сегментного регистра в другой. Подобные ситуации разрешаются с использованием других регистров микропроцессора. Например: MOV AX,SEGMENT MOV DS,AX МOV AX,DS MOV ES,AX Или PUSH DS POP ES Рассмотрим еще несколько примеров команды MOV: 1) MOV DS,AX; переслать (АХ) в DS
2) MOV AL,’E’; переслать в AL ASCII код буквы Е
3) MOV [BX],DX переслать (DX) в ячейку адресованную (ВХ) Здесь ЕА прибавляется к (DS)×16. 4 ) MOV AX,Y[BP][SI]; переслать в АХ содержимое ячейки памяти, определенной суммой (ВР), (SI) и смещения Y
Здесь ЕА прибавляется к (SS)×16. Отметим, что при использовании регистра ВР в качестве базового, эффективный адрес ЕА всегда складывается с содержимым сегментного регистра SS, умноженного на 16. Приведем варианты фрагментов программы, которые помещают в регистр AL, используя различные способы адресации, ASCII код буквы I из символьной цепочки "ABCDEFGHIJKLM". Цепочка предварительно вводится в оперативную память командой ассемблера DB, которая помечается меткой CharStarmg. Отметим, что каждый символ занимает в памяти один байт. Символ I смещен относительно А на 8 байт. На рис.5 приведено расположение цепочки в памяти.
Рис.5. Расположение цепочки "ABCDEFGHIJKLM" в памяти
.DATA - определение сегмента данных MAIN DB 'MAIN' CharStrmg DB ’ABCDEFGHIJ’ .CODE - определение сегмента кода. MOV AX,@DATA; в регистр АХ загружается сегментный адрес сегмента данных; MOV DS,AX; в регистр DS перемещается содержимое регистра АХ. MOV SI,OFFSET CharString + 8; в регистр SI загружается смещение строки CharString относительно начала сегмента данных на 8 байт (непосредственная адресация) MOV AL,[SI]; врегистр АХ помещается значение символа I из строки символов (регистровая относительная адресация)
MOV ВХ,8 MOV AL,[CharString + ВХ] Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |