No witam, bawie sie w nauke asm x64 i dzis chcialem sobie poprobowac pare syscalli w linuxie i mam problem z tym programem

global start
section .text

start:
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ZawzietyRobaczek: (a0) w nawiasie to użycie pamięci pod adresem zawartym w a0, to samo co \*a0 w C.
d(a0) to mniej więcej \*(d+a0) (przy czym obliczenia są tu w zawsze bajtach), gdzie d to jakaś stała.
Masz poczytaj: https://archive.org/details/Pocket_Guide_Assembly_Language_for_the_68000_Series/mode/2up
Kod wygląda, że wczytuje 16-bitową szerokość spod adresu w d0 i 32-bitowy adres bitmapy z d+d0, po czym włącza pixel o współrzędnych X=d1 Y=d2. Bitmapa jest jednobitowa (pewnie jeden bitplane na
  • Odpowiedz
@ZawzietyRobaczek: Zauważyłem właśnie, że szerokość w strukturze jest podana w bajtach, czyli szerokość w pikselach podzielona przez 8
MOVE.l d0,a0 – kopiuje do a0 wskaźnik na szerokość (nie można używać wskaźników bezpośrednio w d0-d7, bo 68000 tak już ma; .l oznacza operację 32-bitową)
MULU (a0),d2 – mnoży 16-bitową szerokość odczytaną przez wskaźnik razy Y, dając numer bajtu na początku wiersza
MOVE.l d(a0),a0 – odczytuje z d+a0 w a0 wskaźnik na początek bitmapy
ADD.l d2,a0
  • Odpowiedz
@Kopytko1: To jest odpowiednik instrukcji PUSH na innych platformach. Zawartość rejestrów d0,d1,d2,d3,d4,d5, d6,a1,a2,a3 zostaje zapisana w pamięci wskazywanej przez a0 po uprzednim przesunięciu a0 o 10 longów (=40 bajtów) w lewo. A służy to najprawdopodobniej temu, że za chwilę będzie MOVEM.l (a0)+, d0-d6/a1-a3, który jest odpowiednikiem POP i przywróci wartości tych rejestrów. Program po prostu zachowuje wartości kilku rejestrów, bo za chwilę te rejestry będą używane, ale potem ich wartości
  • Odpowiedz
.globl _main
_main:
  # pierwsza wersja - wstawiam po prostu wszystko inline
  lea rdi, [rip + L_.hello]
  xor rax, rax
  call _printf
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 2
#programista15k i reszto ekspertów od programowania. Czy w obecnych czasach warto jest się uczyć Visual Basic'a i Asembler'a? Coś tam koduje w Pythonie i Javie a te dwa języki zainteresowały mnie pod względem programowania hardwarowego. Jeśli tak to jakie IDE polecacie do tych języków?

#programowanie #pytaniedoeksperta #visualbasic #asembler
  • 22
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Totalnie nie ogarniam #asembler, a na wykładzie nic o tym jeszcze nie było. Czy może ktoś wytłumaczyć co robi ten program?
tab: equ 30h
ld de,tab
ld b,8 ;licznik powtórzeń pętli
ld a,80h
powt: ld (de),a ;wpis bajtu do
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 1
@timszel no ja miałem to samo, 3 dni siedzieliśmy z ziomkami po nocach na jakichś kompilatorach online i próbowaliśmy zrozumieć, robiliśmy burze mózgów i w końcu jakoś do tego doszliśmy (jak jedna osoba zrozumiała to już poszło, bo wytłumaczyła)
  • Odpowiedz
@numeryczny_mikolaj12: zrobiłbym tak:
1. zm1 i zm2 są buforami na ciąg znaków, powinny zatem być odpowiednio dużymi tablicami.
2. po odczytaniu danych od użytkownika, przeleć się bo obydwu buforach i poodejmuj '0' od każdego elementu
3. w pętli dodawaj jeden bufor do drugiego. Tu się robi trochę problematycznie bo: 1. trzeba, dla wyników większych od 10 robić przeniesienie do kolejnej pary cyfr, 2. trzeba pamiętać, że liczby mogą być różnej
  • Odpowiedz
Drogie mirki, powiedzcie mi od czego zacząć naukę asemblera? Z tego co widziałem asembler ma wiele wersji? Zestawy instrukcji pod różne architektury procesorów, fasm, nasm, tasm? Której wersji tego języka używa się we wstawkach dla języka wyższego poziomu?

#asembler #programowanie #naukaprogramowania #informatyka
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#asembler #programowanie
Mireczki mam problem, mam do napisania 2 kody w asemblerze ( pare linijek) a jestem kompletnie w tym zielony.
1. wykonać 100 razy instrukcje inc R1
2. pomnożyć daną znajdującą się w rejestrze r0 przez 5 (zaproponować kilka rozwiązań, w tym użyć instrukcji arytmetycznych i logicznych. Wynik < 0FFH)

Wiem, że są to całkowite podstawy i dla kogoś kto w tym siedzi zajmię to kilka minut
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam zadanie z asemblera - napisac program ktory tylko raz kopiuje dane z TAB_ROM do PORT B - i wyswietla to na ekranie - czy ktoś mógłby mi dać jakieś wskazówki albo za drobną opłata napisać?

#naukaprogramowania #asembler
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach