| 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 Сейчас нет на сайте | надо заполнить нулями оставшееся пространство 
 Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
 |  |  |  |  |