Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;ELŐRE IS FIGYELMEZTETEK, EZ EGY AGYBAJ
- ;HIBÁJA: NINCS CIKLUSBAN... DE ÍGY IS MÁSFÉL ÓRA VOLT ÉS KIMUTATJA A LÉNYEGET
- ADAT SEGMENT ;EZ EGY DARAB SPECIÁLIS STRING
- BHO DB '000' ;BH OUTPUT
- DB ' '
- BLO DB '000' ;BL OUTPUT
- DB '$'
- ADAT ENDS
- CODE SEGMENT
- ASSUME CS:CODE, DS:ADAT
- START: MOV AX, ADAT
- MOV DS,AX
- MOV CX, 4 ;4 SZÁMJEGY
- MOV AH, 1 ;BEMENET
- XOR AL, AL
- MOV DI, AX ;KIPUFFERELJÜK
- XOR BX, BX ;ITT GYŰLIK A SZÁM
- MOV SI, 10 ;SZORZÓ
- BEOLV: MOV AX, BX ;BX-ET BESZOROZZUK TÍZZEL
- MUL SI
- MOV BX, AX ;AZTÁN VISSZATESSZÜK BX-BE
- MOV AX, DI ;INNEN OLVASUNK BE
- ;MIVEL 16 BITES A SZORZÓ, SZORZÁSKOR DX KINULLÁZÓDNA
- ;EZÉRT KELL DI-T A BEMENET PUFFERNAK HASZNÁLNI ÉS EZÉRT NEM HASZNÁLHATÓ DX SEMMIRE
- NEMSZAM: INT 21H
- CMP AL, 13
- JZ CIKLVEG
- CMP AL, '/' ; ASCII
- JC NEMSZAM
- CMP AL, ':' ; ASCII
- JNC NEMSZAM
- XOR AH, AH
- AND AL, 0FH ;MEGVAN A SZÁMJEGYÜNK
- ADD BX, AX ;HOZZÁAD
- LOOP BEOLV
- JMP POSTCIKL
- CIKLVEG: MOV AX, BX ;HA ENTERT KAPTUNK, CSINÁLTUNK EGY TÍZES SZORZÁST, AMIT NEM KELLETT VOLNA
- DIV SI ;VISSZAOSZTJUK
- MOV BX, AX
- POSTCIKL: MOV AH, 2 ;ENTERT KI
- MOV DL, 13
- INT 21H
- MOV DL, 10
- INT 21H
- MOV DI, BX ;EREDMÉNYT ELMENTJÜK
- MOV CX, SI ;CX MÁR NEM KELL, ODA A 10-ET
- CMP BH, 0 ;NAGYOBB-E A SZÁM 256-NÁL?
- JZ CSAKBL ;HA KISEBB, CSAK BLBEN VAN ADAT, CSAK AZT ÍROGATOM
- MOV BL, BH ;BH-T ÁT BL-BE, BÁJTOS ADATOT KÉSZÍTÜNK OSZTÁSOKRA
- XOR BH, BH
- MOV SI, 2 ;HOGY FELTÖLTHESSÜK A KIÍRÓ PUFFEREKET (BHO HÁROM ELEMŰ) VISSZAFELÉ
- KIBH: MOV AX, BX
- XOR AH, AH ;ELŐZŐ MARARDÉK TÖRLÉSE
- DIV CL ;OSZTÁS, NE FELEJTSÜK, CX=10!
- MOV BX, AX
- MOV DL, BH ;FRISS MARADÉKOT DL-BE
- OR DL, '0' ;ASCII-KÓDRA FEL
- MOV BHO[SI], DL ;KI A BUFFERBA
- DEC SI ;LÉPTETÉS
- CMP BL, 0 ;TUDUNK MÉG OSZTANI?
- JNZ KIBH
- MOV BX, DI ;VISSZAÁLLÍTJUK BX-ET (BHO FELTÖLTVE)
- CSAKBL: MOV SI, 2 ;BLO 3 BYTE HOSSZÚ
- KIBL: MOV AX, BX ;UGYANAZ A MÓDSZER, CX MÉG MINDIG 10
- XOR AH, AH
- DIV CL
- MOV BX, AX
- MOV DL, BH
- OR DL, '0'
- MOV BLO[SI], DL
- DEC SI
- CMP BL, 0
- JNZ KIBL
- MOV AH, 9 ;KIÍRÁS
- LEA DX, BHO
- INT 21H
- MOV AH,4CH
- INT 21H
- CODE ENDS
- END START
- ;KIMENET KINÉZETE: XXX XXX
- ;AZ ELSŐ HÁROM SZÁMJEGY BH TARTALMA, A MÁSODIK BL
- ;A BEÜTÖTT SZÁM = 256*BH + BL
- ;A LÉNYEG A KÖVETKEZŐ. AMIKOR A SZÁMOT BEÜTÖM,
- ;AZ EGÉSZ SZÓT EGY ELEMKÉNT VESZEM, ÉS EMIATT A BINÁRIS SZÁMBAN
- ;A 2^8-2^15 SZÁMJEGYÖSSZEGEK BH-BAN LANDOLNAK. EZ ADDIG NEM GOND,
- ;AMÍG VÉGIG EGYKÉNT KEZELEM. DE AMIKOR MEGBOMLIK
- ;A 256-OS HATÁR TISZTÁN HATÁSÁT FEJTI. BL NEM LEHET TÖBB MINT 255,
- ;ÉS AZ EZEN TÚLI SZÁMOK 256OS MARADÉKÁT FOGJA CSAK TARTALMAZNI.
- ;BH PEDIG A 256-OS EREDMÉNYEKET.
- ;PÁR PÉLDAFUTTATÁS TALÁN TISZTÁVÁ TESZI A DOLGOKAT.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement