399 / 73 / 7
Регистрация: 29.01.2018
Сообщений: 1,245
1

адресное пространство

26.03.2019, 01:01. Показов 3808. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
уважаемые форумчане. книги я читаю. вас бы без повода не беспокоил. но что-то до меня не доходит. помогите пожалуйста разобраться.
Митницкий В. Я. Архитектура IBM PC и язык Ассемблера. книга -огонь. но немного не дорос до нее я.
из книги: мы занумеруем все ячейки в памяти с нуля... это будут физические адреса. также может разбить память на последовательные участки по 16 байт, что назовем параграфы. первый параграф будет простираться от 0h до 1fh. второй от 10h до 1fh.... важно заметить-говорят они, что физический адрес первого байта, а мы помним что физический адрес это пронумерованные ячейки, а ячейка это один байт. значит это пронумерованные байты от нуля до.... и так важно заметить-говорят они, что физический адрес первого байта оканчивается на 16тиричную цифру, то есть кратен 16. как так? допустим самая первая ячейка в памяти, ее адрес 1. адрес этой первой ячейки в памяти будет также адресом первой ячейки и в параграфе, то есть 1. но один не кратен 16.
нужна помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2019, 01:01
Ответы с готовыми решениями:

Пустое адресное пространство
Обьясните пожалуйста откуда берётся пустое адресное пространство между дата и код сегментами ???

Адресное пространство
Ситуация такая: Заинтересовался темой создания читов для онлайн игрушек, не ради корысти, но ради...

Адресное пространство
Адрес в сипп является 4байтным числом. Возможно ли модифицировать адрес так, что бы залезть в...

Проецирование на адресное пространство
Доброго времени суток. Нужна помощь в решении примера: Cоздать консольное приложение. Приложение...

8
4149 / 1803 / 213
Регистрация: 06.10.2010
Сообщений: 4,033
26.03.2019, 12:13 2
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

Программисты считают от нуля.
1
399 / 73 / 7
Регистрация: 29.01.2018
Сообщений: 1,245
26.03.2019, 19:05  [ТС] 3
спасибо огромное.....
подскажите еще пожалуйста. пытаюсь умножить одно число на другое, но ничего не получается
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
section .text
global _start
_start:
mov al, 3
mov bl, 2
mul bl
int 0x80
push al
mov eax, 4
mov ebx, 1
pop ecx
mov edx, 1
int 0x80
mov eax, 1
int 0x80
0
4149 / 1803 / 213
Регистрация: 06.10.2010
Сообщений: 4,033
27.03.2019, 04:32 4
Для чего первый int 0x80?
0
Ушел с форума
Автор FAQ
15894 / 7468 / 1013
Регистрация: 11.11.2010
Сообщений: 13,450
27.03.2019, 05:34 5
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

pcmax,
почему push AL, а pop ECX ?
1
4149 / 1803 / 213
Регистрация: 06.10.2010
Сообщений: 4,033
27.03.2019, 07:30 6
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

Для вызова функций linux лучше использовать макросы и константы - так будет читабельнее. Вот например для FASM
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
stdin  = 0
stdout = 1
stderr = 2
 
sys_exit =1
sys_write=4
 
macro invoke func,[args]
{
  common
  counter=0
  forward
  counter=counter+1
  if ~args eq
    if counter=1
        mov ebx,args
    else if counter=2
        mov ecx,args
    else if counter=3
        mov edx,args
    else if counter=4
        mov esi,args
    else if counter=5
        mov edi,args
    end if
  end if
  common
  mov eax,func
  int 80h
}
Пример использования
Assembler
1
2
invoke sys_write,stdout,buf,4
invoke sys_exit
Для вывода числа на экран можно использовать printf - https://habr.com/ru/sandbox/26864/.
2
399 / 73 / 7
Регистрация: 29.01.2018
Сообщений: 1,245
27.03.2019, 21:41  [ТС] 7
да, еле дошло... результат будет всегда больше. значит если были регистры al и bl допустим, то результат будет в ax.


с умножение вроде понял. но подскажите пожалуйста, почему когда я пытаюсь расширить регистра bx, до ebx вот таким путем 0bx, то не получаю нужного мне результата. ну вот простой небольшой пример:

Assembler
1
2
3
mov bx, 3
 
mov eax, 0bx
в eax я не смогу поместить 3. она занулится? или останется в bx? то есть она будет лежать в bx ,но в старшем разряде в eax, будет 0? потому что 0bx , то есть я туда его поместил. правильно?
0
4149 / 1803 / 213
Регистрация: 06.10.2010
Сообщений: 4,033
28.03.2019, 03:37 8
Assembler
1
movzx eax,bx
1
Ушел с форума
Автор FAQ
15894 / 7468 / 1013
Регистрация: 11.11.2010
Сообщений: 13,450
28.03.2019, 05:48 9
Цитата Сообщение от pcmax Посмотреть сообщение
я пытаюсь расширить регистра bx
Assembler
1
2
xor ebx,ebx
mov bl, 3; ebx=3
  1. если требуется простое расширение, то можно использовать MOVZX
  2. если требуется расширение со знаком, то MOVSX
смотри Электронный учебник https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow Глава 10. АРИФМЕТИЧЕСКИЕ КОМАНДЫ https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow Изменение размера числа
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2019, 05:48
Помогаю со студенческими работами здесь

Адресное пространство процесса
Решил почитать про winapi, в результате пока полная путаница. Вот если создал функцию в своей...

Чужое адресное пространство
Как получить доступ к чужому адресному пространству? Допустим, как это делают cheatEngine или...

Адресное пространство процесса
здравствуйте! подскажите как узнать (какие апифункции использовать) адресное пространство...

Адресное пространство Windows
Если вдруг не там спросил, заранее прошу прощения. Я просто не нашёл куда ещё этот вопрос можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru