объясните мне пожалуйста базированную и индексную адресацию в ассемблере. например, что значат эти строчки: 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]
я понимаю, что для вас это наверно глупый вопрос, но всеже ответьте плиз.
ЗЫ: пасибки всем за ответы ;)
Shadow
17.03.2004 0:33
HELLO ALL
; полноценная рабочая программа ; СОВЕТУЮ ЕЕ ПРОКРУТИТЬ ЧЕРЕЗЕ ОТЛАДЧИК ; И ВСЕ СТАНЕТ ЯСНО КАК ДЕНЬ ; НАДЕЮСЬ НИГДЕ НЕ ОШИБСЯ ;
.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, спасибо за объяснения . но не мог бы ты еще один момент уточнить: получается что записи 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 добавить а вместо первых двух строчек кода (присвоения ds) можно написать ASSUME DS:DATA... но это уже оффтопик
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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.