Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[asm]invalid operand

Ostatnio zmodyfikowano 2009-05-07 17:21
Autor Wiadomość
pekfos
Temat założony przez niniejszego użytkownika
[asm]invalid operand
» 2009-05-06 18:19:01
taki kod:
format BINARY as 'COM'
org 100h
call _inc
call _get
call _ext
num db 4
_inc:
inc num
ret
_get:
mov ah,0
int 16h
ret
_ext:
mov ah,4ch
int 21h
nie działa(pod FASM)
inc num
[invalid operand]
co jest źle?
dodam jeszcze że nie jestem jeszcze orłem w asmie:) i dużo się
można błędów spodziewać
P-6574
DejaVu
» 2009-05-06 20:23:18
push ax
mov al,num
inc al
mov num,al
pop ax
P-6596
pekfos
Temat założony przez niniejszego użytkownika
» 2009-05-06 20:54:05
inc byte[numb]
działa tylko jak to tego numb wpasować '$' bo mi dos nie pozwala
przeczytać wartości numb
P-6598
pekfos
Temat założony przez niniejszego użytkownika
» 2009-05-07 15:20:29
mov ah,9
mov dx,numb
int 21h
chyba wyświetla te zmienną ale tylko '$' brakuje do pełnego efektu
P-6617
manfred
» 2009-05-06 20:33:22
no sorry... num jest stałą oznaczającą adres tej zmiennej którą sobie zrobiłeś. A adres to stała. Jeśli chcesz zwiększyć ZMIENNĄ, to dajesz inc rozmiar [zmienna] - tutaj inc byte [num]... A tak ogólnie to używaj add/sub co, 1 zamiast inc/dec, szybsze. W tym przypadku będzie po prostu add byte [num], 1.
A poza tym, akurat tu zamiast funkcji powinieneś użyć makr - wtedy nie ma żadnego narzutu przez CALL i RET.
P-18870
manfred
» 2009-05-06 21:57:02
Musisz sam przekonwertować znak na formę drukowalną przez DOS. A pod Windowsem musiałbyś tylko wywołać putchar...
P-18871
manfred
» 2009-05-07 17:21:08
Zależy jako co chcesz wypisać. Jeśli jako znak:
macro putchar char
{
  if ~ char in <>
    mov dl, char
  end if
  mov ah, 02h
  int 21h
}
;użycie:
putchar 'a'
;jak liczbę mamy w rejestrze innym niż dl, to
putchar al
;jak w dl to po prostu:
putchar
;jak w zmiennej
putchar byte [zmienna]
Jeśli jako liczbę, to poszukaj, pełno tego na necie (ja ci nie pomogę - mam 64-bit windows, nie ma w nim ntdvm).
P-18875
« 1 »
  Strona 1 z 1