Size: a a a

Ассемблер

2021 April 13

AM

Alexander Morozov in Ассемблер
Это специальная область памяти, к которой обращаются специальным способом. Например:

push eax
push ebx
push ecx

по-очередно сохраняют регистры в стеке.

Потом данные можно вынуть обратно командами:

pop ecx
pop ebx
pop eax.

При желании можно «откусить» от стека кусок памяти для буфера, и так, обычно, и делают компиляторы ЯВУ, когда компилируют функции и процедуры. Но доступ к этой памяти оформляется иначе.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
обрати внимание на "аппаратный стек" в конце
источник

3I

33 Ivan in Ассемблер
Понял, спасибо большое, буду говорить и использовать правильно
источник

3I

33 Ivan in Ассемблер
Но куда помещается текст при вводе если в регистр он не влезает, но при этом обращаясь к регистру мы можем его вывести
источник

3I

33 Ivan in Ассемблер
Вообще, действительно огромное спасибо, я начинаю понимать насколько у меня гигантские пробелы в таких важных азах
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
ты в какой то регистр клажешь адрес памяти по метке buff, вот по этому адресу строка и записывается
источник

3I

33 Ivan in Ассемблер
А можно положить адрес только части памяти по метке
источник

3I

33 Ivan in Ассемблер
Чтоб например обратиться к первому символу?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
а дальше остается стравнить первый байт по этому адресу на равеноство "-", и если совпадает, то ты свою строку начинал с буквы "-"
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
это как?? у тя есть линейка. как можно обратиться к нулю, который не совсем ноль, а только его часть. я правильно выразил аллегорию?
источник

3I

33 Ivan in Ассемблер
Понял
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
стрка и начинает писаться с этого адреса. значит по этому адресу и будет находиться первый символ строки
источник

AM

Alexander Morozov in Ассемблер
А в регистр и кладется ссылка на начало памяти. Т.е на первый символ. Мы просто знаем, а знаем потому, что сами это задали, что дальше есть еще и еще символы. Всего size символов.
источник

3I

33 Ivan in Ассемблер
Обращаться к первому байту нужно через регистр al, я правильно понимаю?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
если ты туда положишь этот символ, но можно сразу

byte[buff]    (это фасм, но смысл тот же)
источник

AM

Alexander Morozov in Ассемблер
mov bx,s ; Начало строки записали в bx
mov al,[bx] ; Взяли первый символ
inc bx ; Увеличили bx на 1
mov al,[bx] ; Взяли второй символ
inc bx ; Увеличили bx на 1
mov al,[bx] ; Взяли третий символ
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
а не проще сразу писать с адресной арифметикой?

mov al,[bx] ; Взяли первый символ
mov al,[bx+1] ; Взяли второй символ
mov al,[bx+2] ; Взяли третий символ
источник

AM

Alexander Morozov in Ассемблер
Но лучше использовать для перебора всех символов цикл.
источник

3I

33 Ivan in Ассемблер
Я правильно понимаю что al это часть регистра eax или это совершенно разные регистры
источник