B_TAB db 1Ah,2Bh,3Ch,4Dh,5Eh,6Fh,7Ah,8Bh
W_TAB dw 1A2Bh,3C4Dh,5E6Fh,7A8Bh B_TAB1 db 0Ah,8 dup(1) W_TAB1 dw 8 dup(1) DSEG ends ESEG segment W_TAB2 dw 11h,12h,13h,14h,15h,16h,17h,18h ESEG ends CSEG segment para public 'code' PROG proc far Assume ds:DSEG,cs:CSEG,ss:SSEG,es:ESEG Push ds Mov ax,0 Push ax ;инициализация сегментных регистров Mov ax,dseg Mov ds,ax Mov ax,eseg Mov es,ax ;непосредственная (операнд-источник) mov al,-3;расширение знака Mov ax,3 Mov B_TAB,-3 Mov W_TAB,-3 Mov ax,2A1Bh ;регистровая Mov bl,al Mov bh,al Sub ax,bx Sub ax,ax ;прямая Mov ax,W_TAB mov ax,W_TAB+3 mov ax,W_TAB+5 mov al,byte ptr W_TAB+6 Mov al,B_TAB mov al,B_TAB+2 Mov ax,word ptr B_TAB mov es:W_TAB2+4,ax ;косвенная Mov bx,offset B_TAB mov si,offset B_TAB+1 mov di,offset B_TAB+2 mov dl,[bx] mov dl,[si] mov dl,[di] mov ax,[di] Mov bp,bx mov al,[bp];какой сегмент? mov al,ds:[bp] mov al,es:[bx] mov ax,cs:[bx] ; базовая mov ax,[bx]+2;основная форма mov ax,[bx]+4;проверьте допустимость других mov ax,[bx+2] mov ax,[4+bx] mov ax,2+[bx] mov ax,4+[bx] mov al,[bx]+2 mov bp,bx;другой базовый регистр mov ax,[bp+2];откуда содержимое ax? mov ax,ds:[bp]+2;попробуем переназначить ;сегментный регистр mov ax,ss:[bx+2] ;индексная mov si,2;загрузка индекса mov ah,B_TAB[si];основная форма mov al,[B_TAB+si];проверьте другие mov bh,[si+B_TAB] mov bl,[si]+B_TAB mov bx,es:W_TAB2[si] Mov di,4 mov bl,byte ptr es:W_TAB2[di] mov bl,B_TAB[si] ;базовая индексная mov bx,offset B_TAB;загрузка базы mov al,3[bx][si];основная форма mov ah,[bx+3][si] mov al,[bx][si+2] mov ah,[bx+si+2] Mov bp,bx mov ah,3[bp][si];из какого сегмента? mov ax,ds:3[bp][si] mov ax,word ptr ds:2[bp][si] Ret PROG endp CSEG ends End PROG Контрольные вопросы: 1. Объясните формирование 20 битного физического адреса по схеме сегмент:смешение? 2. Сколько режимов адресации существует, расскажите разницу? 3. Приведите общий формат команды определения данных программ на Ассемблере. 4. Найдите ошибку в следующих командах: MOV DS,@DATA MOV AX,ES MOV DS,AX MOV CS,AX MOV (ячейка памяти), (ячейка памяти) 5. Назначение команды POP и PUSH, приведите общий формат команды, приведите пример использования этой команды. 6. Расскажите об операторе PTR. 7. Назначение команды XCHG, приведите пример использования этой команды. 8. Найдите ошибку в следующих командах: XCNG AX,BX XCHG CX,BL XCHG ES,DS XCHG DATA1,AX 9. Для чего нужен стек в программе? 10. Расскажите о способах определения сегментов памяти?
Лабораторная работа №3 Арифметические операции. Битовые команды. Цель работы: - изучить арифметические операции языка ассемблера; - научить их использование при составлении программ; - дать понятие о битовых командах и их применение;
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ Арифметические операции на языке ассемблера выполняются над целыми числами четырех типов: Беззнаковыми двоичными, знаковыми двоичными, упакованными десятичными и неупакованными десятичными. В данной лабораторной работе рассматриваются арифметические операции над безззнаковыми числами. Используются следующие команды: ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|