od pewnego czasu zacząłem uczyć się assemblera (na początku od P. Gynavela, lecz kompletnie nic nie rozumiałem, a jak coś już zrozumiałem, to zaraz ta wiedza nie miała porzytku, bo to jednak nie było to... więc zacząłem się uczyć odrazu turbo asma (no bo tasm, to chyba kompilator turbo asma) z binboy.org i nawet rozumiem co i jak), lecz mam parę problemów i parę pytań odnośnie tego, mianowicie:
1. Czy w tasm'ie można w ogóle operować na 32 bit rejestrach (bo ja akurat piszę sobie programiki w GUI Turbo Assembler x64 Version 3.0)?
2. Czy da się zmusić Tasm, żeby zakompilował mi plik tak, bym mógł go odczytać na moim 64 bit windowsie 7? (tak wiem, że piszę w 16 bit i nie pójdzie, ale jestem tylko ciekaw czy tak się da...)
3. Kożystam z tego Binboya i gdzieś przeczytałem, że przerwanie int 21h pobiera dane z ah, a wkłada do al. To w jaki sposób miałbym kożystać z tych rejestrów 32 bitowych, jak to przerwanie obsługuje 16 bit rejestr dzielony na 2x8 bit... ? :/
4. jak do tablicy dodać element podczas działania programu (bo pobieram znak i chciałbym dodać na koniec znak "$", żeby się program nie "niszczył" podczas wyświetlania danych)
Dopiero zacząłem się w to bawić, więc mnie nie gańcie za jakieś niedociągłości, czy, że gadam głupoty, to po prostu czysta ciekawość... xD
no i taki mój pierwszy programik w assembly xD
.model small
.stack 100h
.data
dane db "dane", 10, "$"
danaA db ?
wynik db ?
.code
main proc
mov ax, @data
mov ds, ax
start:
mov ax, 3
int 10h
mov ah, 8h
int 21h
cmp al, 27
je wyjscie
sub al, 48
mov danaA, al
mov ah, 8h
int 21h
sub al, 48
add al, danaA
mov wynik, al
mov cx, WORD PTR wynik
mov ah, 9h
mov dx, offset dane
miejsce:
int 21h
LOOP miejsce
mov ah, 8h
int 21h
jmp start
wyjscie:
mov ax,4C00h
int 21h
main endp
end main