nasm и call
|
|
vasua99 | Дата: Среда, 09 Мая 2012, 20:47 | Сообщение # 1 |
GNU follower
Сейчас нет на сайте
| подскажите почему не работает следующая программа(ассемблер NASM): [code] section .code org 0x100 mov ax,0xb800 mov es,ax mov di,0 mov ah,10 mov al,hello call out_string ; почему то ошибка int 0x20
out_string proc ; здесь тоже ошибка symb: cmp al,'$' jz exit mov [es:di],ax add di,2 inc al jmp symb exit: ret out_string endp section .data hello db "Hello$" И еще - можно ли в nasm использовать at&t синтаксис?
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Нохчи | Дата: Среда, 09 Мая 2012, 21:05 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Quote (vasua99) mov al,hello Во первых смущает эта строка. Не знаю как там в nasm, но в нормальнных ассемблерах(masm/fasm) такое не прокатит. И у тебя ошибка компиляция или валится во время выполнения?
Добавлено (09.05.2012, 21:05) --------------------------------------------- Ага, погуглил по синтаксису насма, вместо процедур юзаются метки(что при call/ret одно и то же в принципе). То есть твой код должен выглядеть так: Code section .code org 0x100 mov ax,0xb800 mov es,ax mov di,0 mov ah,10 mov al,hello call out_string int 0x20
out_string: symb: cmp al,'$' jz exit mov [es:di],ax add di,2 inc al jmp symb exit: ret
section .data hello db "Hello$"
Многие вопросы по Windows отпадут, если посмотреть тут
Сообщение отредактировал Нохчи - Среда, 09 Мая 2012, 21:05 |
|
| |
vasua99 | Дата: Среда, 09 Мая 2012, 22:18 | Сообщение # 3 |
GNU follower
Сейчас нет на сайте
| спс большое,можешь подсказать ссылку где о насме такое нашел,искал,но про это не встречал ни разу) Добавлено (09.05.2012, 22:18) --------------------------------------------- и вот еще вопрос почему при адресации с помощью ds ошибка,а с пощью si и di нет,они же все 16 битные: Code mov [es:dx], bla-bla-bla ; error mov [es:si], bla-bla-bla ; ok
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Нохчи | Дата: Четверг, 10 Мая 2012, 14:13 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| Quote (vasua99) спс большое,можешь подсказать ссылку где о насме такое нашел,искал,но про это не встречал ни разу) Забил в гугле "nasm процедуры". Первые же ссылки разъяснили все.
Quote (vasua99) и вот еще вопрос почему при адресации с помощью ds ошибка,а с пощью si и di нет,они же все 16 битные ds - сегментный регистр(про сегменты здесь и здесь). si и di регистры общего назначения.
И забейте в конце концов на этот дос. Все-равно придется все переучивать.
Многие вопросы по Windows отпадут, если посмотреть тут
Сообщение отредактировал Нохчи - Четверг, 10 Мая 2012, 15:11 |
|
| |
vasua99 | Дата: Пятница, 11 Мая 2012, 21:06 | Сообщение # 5 |
GNU follower
Сейчас нет на сайте
| а мне не так дос важен как знание команд/архитектуру процессора,а дос это всего лишь временое средство,дальше в линукс перейду Добавлено (11.05.2012, 21:06) --------------------------------------------- и еще - плчему в насме не работает конструкция вида Высвечивать что-то про неконстантный аргумент, а times 510-$ сжевывает нормально
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Нохчи | Дата: Пятница, 11 Мая 2012, 21:11 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Quote (vasua99) times 510-$+0x7c00 мб так?
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
vasua99 | Дата: Пятница, 11 Мая 2012, 21:17 | Сообщение # 7 |
GNU follower
Сейчас нет на сайте
| неа,если times 510-($-$$) тогда бинарник не на 512 б а на 540 почему то выходит...
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Нохчи | Дата: Пятница, 11 Мая 2012, 21:29 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Quote (Нохчи) times 510-$+0x7c00 В чем смысл этого выражения? Если нужно заполнить до 510 байта значениями 7c00h, то так наверно должно быть: А вообще хз, с насмом боюсь помочь не могу.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
vasua99 | Дата: Пятница, 11 Мая 2012, 21:33 | Сообщение # 9 |
GNU follower
Сейчас нет на сайте
| надо заполнить нулями оставшееся пространство
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |