nixp.ru v3.0

15 ноября 2024,
пятница,
15:45:34 MSK

Fatal написал 6 августа 2004 года в 20:25 (1174 просмотра) Ведет себя как мужчина; открыл 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 не выходя из защищенного режима, к примеру если программа копирует напрямую в видео память?

Fatal

> — не проходит, т.к. компилятор 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 не выходя из защищенного режима, к примеру если программа копирует напрямую в видео память?

myst

.code16

movw %ax,%es:(%di)

movw $message,%ax

message: .string «String»

Fatal

Вы, не знаете есть ли в Интернете какая-нибудь литература (можно и по английски) по GNU Assembler довольно-таки подробная. Я сколько не находил литературы — она вся отталкивалась от знаний ассемблера с синтаксисом Intel/Microsoft, и поэтому не было много сказано. Или может у вас есть в электроном виде, мой адрес: ab_fatal@mail.ru

Fatal

И как можно протестировать программу под FreeBSD не выходя из защищенного режима, к примеру если программа копирует напрямую в видео память?

Fatal

Все равно не проходит:

.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 то ошибки не будет

myst
Fatal
Вы, не знаете есть ли в Интернете какая-нибудь литература (можно и по английски) по GNU Assembler довольно-таки подробная. Я сколько не находил литературы — она вся отталкивалась от знаний ассемблера с синтаксисом Intel/Microsoft, и поэтому не было много сказано. Или может у вас есть в электроном виде, мой адрес: ab_fatal@mail.ru

Берёшь доку в которой юзается .intel, а в другом окне открываешь info gas.

Последние комментарии

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.