Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ разные типы адресации в ассемблере

Автор: %антрополог% 16.03.2004 0:31

всем привет ! smile.gif

объясните мне пожалуйста базированную и индексную адресацию в ассемблере.
например, что значат эти строчки:
1. mov al,[bx]+3
2. mov al,[bx+3]
3. mov cx,matr[bx][di]
4. mov ax,matr[bx*4][di]
5. mov ax, es:[bx]

я понимаю, что для вас это наверно глупый вопрос, но всеже ответьте плиз.

ЗЫ: пасибки всем за ответы smile.gif ;)

Автор: Shadow 17.03.2004 0:33

HELLO ALL
smile.gif

; полноценная рабочая программа
; СОВЕТУЮ ЕЕ ПРОКРУТИТЬ ЧЕРЕЗЕ ОТЛАДЧИК
; И ВСЕ СТАНЕТ ЯСНО КАК ДЕНЬ
; НАДЕЮСЬ НИГДЕ НЕ ОШИБСЯ
;

.MODEL SMALL
.STACK 100h
.DATA

value DB 10,11,12,13,14,15,0ah,01h,1h

.CODE
start:
mov ax,@data ;значение адреса сегмента данных получаем
mov ds,ax ;инициализ сегмент данных т.е. в рег DS будет наход
;адрес начала сегмента данных
;===============================
mov bx,offset value ;получаем адресс переменной т.е.
;адрес начало сегмента плюс адрес переменной
mov al,[bx]+3
; в данном случае это означает что из адреса наход в регистре
; BX со смещением 3 т.е. к числу наход в регистре BX прибавить 3
; это будет конечный адрес т.е. число которое окажется в регистре AL
; будет 13 0d
mov bx,offset value ; по новой
mov al,[bx+3] ; тоже самое

mov bx,2 ;задаем смещение
mov di,1 ;---

mov cx,offset value[bx][di] ;в регистр CX значение из адреса value+BX+DI
;будет число 0e0d -> 1413 надеюсь понятно
;почему перевернутое
;
mov ax,offset value[bx+4][di];значение из адреса value+bx+4+1=7 -> 0101

mov ax,ds:[bx];это пара т/е/ сегмент даных который мы назначили
; в начале+значение а регистре BX будет число 0d0c
; т/к/ в BX у нас значение 2 весь счет идет в сегменте
; данных от нуля

mov ax,4c00h ; exit
int 21h

END start

Автор: %антрополог% 17.03.2004 4:55

shadow, спасибо за объяснения smile.gif. но не мог бы ты еще один момент уточнить: получается что записи
mov al,[bx]+3 и mov al,[bx+3] одинаковы ???

Автор: Dark 17.03.2004 8:02

Да, одинаковы, обе получают байт по адесу bx+3

Автор: Infinity 2.04.2004 3:53

а на каком асме написана прога?
а то мы прходим turbo assembler.... и пишем начало по другому...

Автор: P@sh@ 2.04.2004 10:30

да IMHO эта прога и на TASMе оттранслируется нормально... в EXE-шник...
чтоб в COM, надо бы еще ORG 100h добавить smile.gif
а вместо первых двух строчек кода (присвоения ds) можно написать ASSUME DS:DATA...
но это уже оффтопик smile.gif

Автор: prednisone over the counter walg 11.11.2021 4:23

Acheter Du Cytotec En Ligne

Автор: how long does plaquenil take to 7.12.2021 8:26

kamagra in the philippines