Fatal
написал 6 августа 2004 года в 20:25 (1184 просмотра)
Ведет себя
как мужчина; открыл 123 темы в форуме, оставил 484 комментария на сайте.
(1)mov es:[di],ax
и
(2)mov ax,offset message
message db ‘String’
как можно записать эти строки на GNU Asm?
(1) первую строку я не знаю как переписать под GNU Asm, а (2)
movw $message, %ax
message: .string »String»
- не проходит, т.к. компилятор as требует, чтобы адрес был двойным словом. Мне нужно программу, содержащую эту строку, записать в загрузочный сектор, а в реальном режиме регистры 8086, поэтому movl $message, %eax не проходит
И как можно протестировать программу под FreeBSD не выходя из защищенного режима, к примеру если программа копирует напрямую в видео память?
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
> — не проходит, т.к. компилятор as требует, чтобы адрес был двойным словом.
Извините за ошибку. Не компилятор требует, а линковщик ld конечно же
Правильно будет так:
(1)mov es:[di],ax
и
(2)mov ax,offset message
message db ‘String’
как можно записать эти строки на GNU Asm?
(1) первую строку я не знаю как переписать под GNU Asm, а (2)
movw $message, %ax
message: .string »String»
- не проходит, т.к. компилятор ld требует, чтобы адрес был двойным словом. Мне нужно программу, содержащую эту строку, записать в загрузочный сектор, а в реальном режиме регистры 8086, поэтому movl $message, %eax не проходит
И как можно протестировать программу под FreeBSD не выходя из защищенного режима, к примеру если программа копирует напрямую в видео память?
.code16
movw %ax,%es:(%di)
movw $message,%ax
message: .string «String»
Вы, не знаете есть ли в Интернете какая-нибудь литература (можно и по английски) по GNU Assembler довольно-таки подробная. Я сколько не находил литературы — она вся отталкивалась от знаний ассемблера с синтаксисом Intel/Microsoft, и поэтому не было много сказано. Или может у вас есть в электроном виде, мой адрес: ab_fatal@mail.ru
И как можно протестировать программу под FreeBSD не выходя из защищенного режима, к примеру если программа копирует напрямую в видео память?
Все равно не проходит:
.code16
.global _start
_start:
movw $0×0b800,%ax
movw %ax,%es
xorw %di,%di
movw $mdata,%si
movw $end,%cx
rep movsw
jmp .
mdata:
.byte 0×41
.byte 0×1f
end=.-mdata
as -o boot.o boot.s
ld -o boot boot.o
boot.o: In function `_start’:
boot.o(.text+0×8): relocation truncated to fit: R_386_16 .text
* Error code 1
movw $mdata,%si — если эту строку закомментировать или написать
movl $mdata,%esi то ошибки не будет
Берёшь доку в которой юзается .intel, а в другом окне открываешь info gas.