Aktív témák
-
nusquam
csendes tag
Na hali!
Nem tudom, hogy yoo helyen jarok-e de nagy szuksegem van egy kis segitsegre!
A kerdesem az lenne, hogy, hogyan lehet Win32asm alatt ugy beolvasmi egy szamot, hogy ne sztringként olvassa be.
Azt megoldottam, hogy a textboxba csak szamokat lehessen beirni, de arra mar nem futta agytekervenyeimbol, hogy ne sztringkent szedje be.
A winhlp32 -ben is kerestem ilyesfajta api-kat de eddig semmi erdekeset nem kaptam.
Elore is koszi... -
-
Jester01
veterán
Mondjuk ilyesmit lehet csinálni:
Border EQU 10h ; border color
Text EQU 30h ; text color
Default EQU 07h ; default color
...
CALL write_block ;Egy blokk kiírása
; restore colors on last line
mov ax, 0920h
mov bx, Default
mov cx, 80
int 10h
MOV AH,4Ch ;Kilépés a programból
INT 21h
...
hborder proc
push ax
push bx
push cx
push dx
mov ax, 0920h
mov bx, Border
mov cx, 67
int 10h
mov ah, 3
mov bx, cx
int 10h ; get cursor (dl = col)
mov dl, bl
mov ah, 2
int 10h
; erase to end of line
mov ax, 0920h
mov bx, Default
mov cx, 13
int 10h
call cr_lf
pop dx
pop cx
pop bx
pop ax
ret
hborder endp
vborder proc
push ax
push bx
push cx
push dx
mov ah, 3
xor bx, bx
int 10h ; get cursor (dl = col)
mov ax, 0920h
mov bx, Border
mov cx, 1
int 10h ; left border
mov ah, 2
mov dl, 66
int 10h
mov ax, 0920h
mov cx, 1
int 10h ; right border
inc dl
mov ah, 2
int 10h ; cursor right
; erase to end of line
mov ax, 0920h
mov bx, Default
mov cx, 13
int 10h
mov dl, 1
mov ah, 2
int 10h ; cursor at col 2
mov ax, 0920h
mov bx, Text
mov cx, 65
int 10h
pop dx
pop cx
pop bx
pop ax
ret
vborder endp
write_block proc ;Egy blokk kiírása a képerny\u0151re
PUSH BX
PUSH CX ;CX mentése
PUSH DX ;Dx mentése
call hborder ; top border
MOV CX, 32 ;Kiírandó sorok száma CX-be
s_w_new:
CALL out_line ;Egy sor kiírása
CALL cr_lf ;Soremelés
ADD DX, 16 ;Következ\u0151 sor adatainak kezd\u0151címe
LOOP s_w_new ;Új sor
call hborder ; bottom border
POP DX ;DX visszaállítása
POP CX ;CX visszaállítása
POP BX
RET
out_line proc
PUSH BX ;BX mentése
PUSH CX ;CX mentése
PUSH DX ;DX mentése
call vborder
...
Lehet, hogy tök máshogy érdemes csinálni, mindenesetre mûködik: -
Gergi
senior tag
Nem én írtam a progit hanem a tanárom könyvéből másoltam ki. A könyvet használva kell vmi háttérszínt meg keretet adni a proginak (magyarul testreszabni). A szektorolvasás tökéletesen lefut. A háttérszínadást meg a keretet elmagyaráznád részletesebben is? Láma vagyok ehhez.
-
Jester01
veterán
-
Gergi
senior tag
Végre valaki!
Az a feladat h kell egy olyan progit írni assembly-ben ami beolvassa a floppy egy szektorát és kiírja a tartalmát. A kiírt adatoknál legyen keret és valamilyen háttérszín (mondjuk kék, de lehet átmenetes is).
Eddig idáig jutottam:
.MODEL SMALL
Space EQU '' '' ;Szóköz karakter
.STACK
.DATA?
Block DB 512 DUP (?) ; 1 blokknyi terület kijelölése
.CODE
main proc
MOV AX,dgroup ;DS beállítása
MOV DS,AX
LEA BX, BLOCK;DSX ;memóriacímre tölti a blokkot
MOV AL, 0 ;Lemezmeghajtó száma (A:0, B:l, C:2, stb.)
MOV CX, 1 ;Egyszerre beolvasott blokkok száma
MOV DX, 0 ;Lemezolvasás kezdőblokkja
INT 25h ;Olvasás
POPF ;A veremben tárolt jelzőbitek törlése
XOR DX, DX ;Kiírandó adatok kezdőcíme DSX
CALL write_block ;Egy blokk kiírása
MOV AH,4Ch ;Kilépés a programból
INT 21h
main endp
convert_hexa proc
push cx
push dx
mov dh, dl
mov cx, 4
shr dl, cl
call convert_hexa_digit
mov dl, dh
and dl, 0Fh
call convert_hexa_digit
pop dx
pop cx
ret
convert_hexa endp
write_char proc
push ax
mov ah, 2
int 21h
pop ax
ret
write_char endp
convert_hexa_digit proc
push dx
cmp dl, 10
jb non_hexa_letter
add dl, ''A''-''0''-10
non_hexa_letter:
add dl, ''0''
call write_char
pop dx
ret
convert_hexa_digit endp
write_block proc ;Egy blokk kiírása a képernyőre
PUSH CX ;CX mentése
PUSH DX ;Dx mentése
MOV CX, 32 ;Kiírandó sorok száma CX-be
s_w_new:
CALL out_line ;Egy sor kiírása
CALL cr_lf ;Soremelés
ADD DX, 16 ;Következő sor adatainak kezdőcíme
LOOP s_w_new ;Új sor
POP DX ;DX visszaállítása
POP CX ;CX visszaállítása
RET
write_block endp
out_line proc
PUSH BX ;BX mentése
PUSH CX ;CX mentése
PUSH DX ;DX mentése
MOV BX,DX ;Sor adatainak kezdőcíme BX-be
PUSH BX ;Mentés a karakteres kiíráshoz
MOV CX, 16 ;Egy sorban 16 hexadecimális karakter
hexa_out:
MOV DL, Block[BX] ;Egy bájt betöltése
CALL convert_hexa ;Kiírás hexadecimális formában
MOV DL,Space ; Szóköz kiírása a karakterek között
CALL write_char
INC BX ;Következő adatbájt címe
LOOP hexa_out ;Következő bájt
MOV DL, Space ;Szóköz kiírása a kétféle mód között
CALL WRITE_CHAR
MOV CX, 16 ;Egy sorban 16 karakter
POP BX ;Adatok kezdőcímének beállítása
ascii_out:
MOV DL, Block[BX] ; Egy bájt betöltése
CMP DL, Space ; Vezérlőkarakterek kiszűrése
JA visible ; Ugrás, ha látható karakter
MOV DL, Space ;Nem látható karakterek cseréje szóközre
visible:
CALL write_char ;Karakter kiírása
INC BX ;Következő adatbájt címe
LOOP ascii_out ;Következő bájt
POP DX ;DX visszaállítása
POP CX ; CX visszaállítása
POP BX ;BX visszaállítása
RET ;Vissza a hívó programba
out_line endp
end -
Gergi
senior tag
Esti Up!
-
Gergi
senior tag
Déli Up!
Valaki segítsen már lécci, mert csütörtökön le kéne adnom a kész progit! -
Gergi
senior tag
Reggeli Up!
-
csiga997
őstag
P. Norton - Az IBM PC assembly nyelvű programozása kell neked (Novotrade-Prentice Hall, 1991, ISBN9635850166)
Régi könyv, antikvárium, könyvtár azért esélyes. Pont egy ilyen diszk-kezelő progi felépítését boncolgatja lépésről-lépésre.
(Ha 1991-ben kérdezted volna, még talán érdemben is tudtam volna segíteni...)
-
Gergi
senior tag
Up!
-
Gergi
senior tag
Sziasztok!
Teljesen kezdő vagyok a témában, de van egy olyan feladatom, hogy egy floppy szektor beolvasó progit kell készítenem assembly-ben valami kerettel és háttérszínnel együtt. Idáig jutottam a progizással. Mivel kéne még kiegészíteni (háttérszín, keret)? Előre is köszönöm a segítséget!
(esetleg ha lehet egyszerűsíteni a progit, akkor lécci azt is írjátok meg)
.model small
.stack
.data?
block DB 512 DUP(?)
.code
main proc
mov ax, dgroup
mov ds, ax
lea bx, block ;ds:bx cel
mov al, 0 ;A: meghajto
mov cx, 1 ;1 db block olvasasa
mov dx, 0 ;kezdo cim
int 25h
popf
xor dx, dx
call write_block
mov ah, 4Ch
int 21h
main endp
write_block proc
push cx
push dx
mov cx,32
s_w_new:
call out_line
call crlf
add dx, 16
loop s_w_new
pop dx
pop cx
ret
write_block endp
space EQU '' ''
CR EQU 10
LF EQU 13
out_line proc
push bx
push cx
push dx
mov bx, dx
push bx
mov cx,16
hexa_out:
mov dl, block[bx]
call convert_hexa
mov dl, space
call write_char
inc bx
loop hexa_out
mov dl, space
call write_char
mov cx, 16
pop dx
ascii_out:
mov dl, block[bx]
cmp dl, space
ja visible
mov dl, space
visible:
call write_char
inc bx
loop ascii_out
pop dx
pop cx
pop dx
out_line endp
convert_hexa proc
push cx
push dx
mov dh, dl
mov cx, 4
shr dl, cl
call convert_hexa_digit
mov dl, dh
and dl, 0Fh
call convert_hexa_digit
pop dx
pop cx
ret
convert_hexa endp
write_char proc
push ax
mov ah, 2
int 21h
pop ax
ret
write_char endp
crlf proc
push dx
mov dl, cr
call write_char
mov dl, lf
call write_char
pop dx
ret
crlf endp
convert_hexa_digit proc
push dx
cmp dl, 10
jb non_hexa_letter
add dl, ''A''-''0''-10
non_hexa_letter:
add dl, ''0''
call write_char
pop dx
ret
convert_hexa_digit endp
END
Aktív témák
- Gaming notebook topik
- Melyik tápegységet vegyem?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Autós topik
- Gitáros topic
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Nők, nőügyek (18+)
- sziku69: Fűzzük össze a szavakat :)
- Mini-ITX
- További aktív témák...
- MacBook Air 2020 13" Retina I3-1000NG4 1 8GB/256G SSD, HUN BIll, 100% akku, üzletből, garanciával
- Eladó Intel NUC8i5BEK mini PC
- Eladó AM5 DDR5 Konfig Ryzen 5 8400F 16GB DDR5 512GB SSD RX5700XT 8GB!
- iPad Pro 12.9" 3.Gen 2018 512GB Space Gray Wifi cellular, Tökéletes , Garanciával, üzletből
- iPad Pro 12.9" 3.Gen 2018 512GB Space Gray Wifi cellular, Garanciával, üzletből
- ÁRGARANCIA!Épített KomPhone i5 10400F 16/32GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Új és újszerű 13"-14" Gamer, ultrabook, üzleti készülékek nagyon kedvező alkalmi áron Garanciával!
- Dell Precision 5540 i7-9850H 16GB 512GB Nvidia Quadro T1000 15.6" FHD 1 év garancia
- LG 27UL550-W - 27" IPS / 3840x2160 4K / 60Hz 5ms / HDR10 / AMD FreeSync
- Lenovo ThinkPad X270 (16) - i5-7300U, 16GB, 512GB SSD, 12" FULL HD (ELKELT)
Állásajánlatok
Cég: FOTC
Város: Budapest