.txt fájlból képernyőre írás

.txt fájlból képernyőre írás
2013-01-11T17:13:35+01:00
2013-01-13T10:16:23+01:00
2022-11-27T22:15:38+01:00
jódiák
Van néhány feladatom amit hibátlanul kéne elkészítenem. Mindegyikhez hozzá kezdtem, de nem jók:
Első Feladat:
1. feladat: készítsünk programot, amely egy beolvas.txt szöveges állományból beolvassa az első 20 karaktert. A beolvasott karaktert írassuk ki a képernyőre. A beolvas.txt állományt mi készítsük el egy text szerkesztővel, és írjunk bele tetszőleges szöveget.
beolvas.asm:
SELECT .text org 100h mov ax, 3 int 10h mov ah, 30h mov al, 0 mov di, adat int 21h JNC open mov ah, 9 mov dx, nincs file INT 21h open1: mov bx, ax mov ax, 3f00h mov bx, puffer mov cx, 20 int 21h mov si, puffer add si, mov [di:es], byte '$' mov ah, 9 mov dx, puffer int 16h mov ah, 3eh int 21h vege: ret adat: DB 'C:/Document and Setting/Laura/Asztal/gyakjegybeolv.txt', 0 nincs file: DB ' nincs gyakjegybeolv.txt FILE' ,'$0' Section.bss puffer: RESB 4000

Előre köszönöm annak aki veszi a fáradtságot, hogy belenézzen.
Mutasd a teljes hozzászólást!
Kifelejtettem még valamit:

az
open1:
címkénél nem kell az "1", mert a
jnc open
-nél nincs ott, így ismeri fel.

És meg lehet még csinálni azt is, hogy ha nincs fájl, ne kerüljön sorra a kezelés. A hibakiíró függvény után, de még az
open:
címke elé tedd be:
jmp vege
Mutasd a teljes hozzászólást!

  • Mit jelent az hogy nem jó :)?
    Org 100h -> com futtathatót állítasz elő. Ez még létezik?
    Mutasd a teljes hozzászólást!
  • Eleve a TXT fájlt tedd a programod mellé és ne teljes elérési úttal hivatkozz rá, mert ez hibát okozhat és a tanárnak sem biztos, hogy ott lesz a TXT fájlja. Elég ha így hivatkozol rá: 'valami.txt'.

    Ez a kód most mire fordul? Mert ha sima DOS-os program, akkor nem hiszem, hogy szerencsés hosszú fájlneveket használni, a fájl neve maximum 8 karakter hosszú legyen (+ maximum 3 karakter kiterjesztés), különben úgysem fogja betölteni, ha éppen ott van (a DOS 8 karakteresre alakítja a hosszú fájlnevet, amitől az megváltozik). (Hogy Windows van a gépeden az ne tévesszen meg, attól az még tartalmazza a DOS módot, vagy emulálja azt.)
    Mutasd a teljes hozzászólást!
  • A fájl megnyitásnál 3Dh-t kell írni az AH-ba.
    A pointert ott a DX-be kell tenni, nem a DI-be

    Olvasásnál a DX-be kell tenni a buffert, te a BX-be teszed, felülírod a file handle-t.

    add si,
    kifelejtetted a 20-at.
    add si,20 mov byte[es:si],'$'

    A kiírásnál: int 21h, nem int 16h

    Utána még kilépés előtt tedd be:
    xor ax,ax int 16h
    Ez várakozik billentyűleütésre
    Mutasd a teljes hozzászólást!
  • Kifelejtettem még valamit:

    az
    open1:
    címkénél nem kell az "1", mert a
    jnc open
    -nél nincs ott, így ismeri fel.

    És meg lehet még csinálni azt is, hogy ha nincs fájl, ne kerüljön sorra a kezelés. A hibakiíró függvény után, de még az
    open:
    címke elé tedd be:
    jmp vege
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd