assembly I/O

16 bites assembly rendszerben szeretnék karaktereket beolvasni a billyentyűzetről, majd kiírni őket. Tudna valaki segíteni?
Köszi szépen!

Hozzászólások

Fölmész a meditor ftp szerverére, ott bejelentkezel
"public"-ként a jelszó egy üre enter. Van ott egy dos_asm
könyvtár, amiben van egy tar.gz fájl. Töméntelen
mennyiségű assembly anyag, 10 év esszenciája, zömmel 16 bites. Használd egészséggel.

> Sol omnibus lucet.

Ha dosról van szó, akkor ez talán segít. Már elég régen írtam egy hasonló programot, nem is magamnak, és már akkor is úgy bogarásztam össze, hogy hogyan kell ezt:), de íme:


.MODEL small
.STACK
.DATA
     data    db (?)
     bsize   db 255
     buffer  db 257 dup (?)

.CODE
     mov ax, seg data     ; itt az eleje
     mov ds, ax

     call read

     mov si, offset buffer
     call print

     mov ah, 4ch
     int 21h              ; itt a vege

; -----------


read proc
     mov ah, 0ah
     mov dx, offset bsize
     int 21h
     ret
read endp



print proc
     xor ax,ax
     mov al, [si]             ; al <-strlen
     inc si
     mov dx, si               ; dx <-pointer a string elejere
     add si, ax
     mov [si], byte ptr '$'   ; $ a string végére
     mov ah, 09h
     int 21h
     ret
print endp

Remélem működik:)
Legjobb tudomásom szerint (ugyanis nem tudom kipróbálni) ez azt csinálja, hogy:
beolvas max 255 karaktert a buffer-be: az első byte jelzi, hogy milyen hosszú szöveget olvastunk be, a többi pedig a beolvasott szöveg. A kiírásnál a végére biggyesztünk egy $ jelet, mert az meg az ah=9-es függvénynek kell.
--
G.