abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 0
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 6
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 1
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    24.4. 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 12
    24.4. 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 768 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: assembler secteni cisla

    15.1.2006 02:45 _change
    assembler secteni cisla
    Přečteno: 410×
    Zdravim vsechny mam takovy zacatecnicky problem, kdy nevim jak prinutit aby mi po secteni dvou cisel vytiskl danou promennou vysledek, takhle mi to vytiskne nic. diky za pomoc, jeslti nekdo vi jak.
    SECTION .data
    cislo1 dd 8
    cislo2 dd 2
    vysledek dd 0
    
    
    SECTION .text
    global _start 
    _start:
    
    mov eax,[cislo1]
    mov ebx,[cislo2]
    add eax,ebx    ;sectu cisla
    mov [vysledek],eax   ;ulozim do vysledku
    
    mov eax,4  ;prvni parametr cislo systemoveh ovolani
    mov ebx,1  ;vim, ze konstanta stdout ma hodnotu 1
    mov ecx,vysledek
    mov edx,32 ;pocet znaku
    int 0x80   ;zavolame jadro
    
    mov eax,1  ;cislo volani jadra - exit
    mov ebx,0  ;navratovy kod 0
    int 0x80   ;zavolame jadro
    

    Odpovědi

    15.1.2006 08:00 Michal Pokorný | skóre: 6
    Rozbalit Rozbalit vše Re: assembler secteni cisla
    No já taky nejsem nějak extra dobrej programátor, ale řekl bych, že tu chybý konverze z datovédo typu dd (4-bytové celé číslo) na řetězec ;)
    15.1.2006 10:14 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: assembler secteni cisla
    Tato funkce by mela vypsat obsah registru AL, ale je to delane pomoci sluzeb DOSu. Doufam, ze se nikdo nebude zlobit, ze jsem to tu dal: ps: jen pro uplnost: int 21h zpusobi preruseni, tim se (podle obsahu registru - z hlavy to neznam) zavola pozadovana sluzba. A u techto funkci staci do AX zapsat byte. Vim, ze to je pro 16 bitovy rezim, ale pro 32 bitu by nemelo byt tezke to prepsat. Doufam ze jsem na nic nezapomnel. Vytahl jsem to z jedne knihovny, kterou mam k dispozici.

    segment code
    
    Write_Word:             ; AX=Byte
    	pushf
        	pusha
        	mov si,4
        	mov bx,10
    wwcyc1: mov dx,0
            div bx
        	add dl,'0'
    	mov [z_w+si],dl
            dec si
            cmp si,0
            jnz wwcyc1
            add al,'0'
    	mov [z_w],al
        	mov dx,z_w
        	mov si,0
    wwcyc2: cmp [z_w+si],byte '0'
        	jne wwcont
        	inc dx
        	inc si
        	cmp si,4
        	jne wwcyc2
    wwcont: call Print_Str   ; viz. nize
    	popa
    	popf
    	ret
    
    Print_Str:              ; DX=String_offset, String='???....???','$'
            pushf
            pusha
            mov ah,9
            int 21h         ;volani sluzeb DOSu
            popa
            popf
            ret
    
            segment data
    z_w     resb 2
    

    Jardík avatar 15.1.2006 11:37 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: assembler secteni cisla
    Opravdu tam chybí převod čísla na řetězec. Funkce na převod:
    ;--------------
    ;NumToAscii
    ;--------------
    ; eax = 32b číslo
    ; ebx = základ soustavy
    ; edi = pointer na buffer, kam bude uložen text
    ;--------------
    
    NumToAscii:
    pushad
    xor esi,esi
    .smycka_prevodu:
    xor edx,edx
    div ebx
    call HexDigit
    push edx
    inc esi
    test eax,eax
    jnz .smycka_prevodu
    cld
    .smycka_zapis:
    pop eax
    stosb
    dec esi
    test esi,esi
    jnz .smycka_zapis
    popad
    ret
    HexDigit:
    cmp dl,10
    jb .mensi
    add dl,'A'-10
    ret
    .mensi:
    or dl,'0'
    ret
    
    Použití:
    mov eax,[vysledek]
    mov edi,buffer
    call preved
    
    v sekci .DATA
    buffer:
    TIMES 12 DB 0
    
    Délku můžeš zjistit pomocí strlen:
    strlen:
    push eax
    xor ecx,ecx
    xor eax,eax
    dec ecx
    cld
    repne scasb
    neg ecx
    pop eax
    ret
    
    Řetězec musí být uložen v ES:EDI a délka se vrátí v ecx. Jinak, abyste neřekli, že jsem blázen, tak prozradím, že je to z knihy Učíme se programovat v jazyce assembler pro PC
    Věřím v jednoho Boha.
    18.1.2006 11:40 _change
    Rozbalit Rozbalit vše Re: assembler secteni cisla
    diky, ale bohuzel zkousel jsem to nejak dat dohromady, a porad mi to nejde, nevim jak ten program dat dohromady, aby to fungovalo,nevite nekdo pls?
    18.1.2006 12:46 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: assembler secteni cisla
    A proč to píšeš v asm napiš to normálně v C a je po ptákách.
    Jardík avatar 24.2.2006 22:37 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: assembler secteni cisla
    Zde je funkční řešení tvého problému:
    ; překlad:
    ; nasm -f elf preved.asm
    ; ld -s -o preved preved.o
    
    SECTION .text
    global _start
    
    _start:
    
    
    
    ; Sečtu Cislo1+Cislo2, výsledek do Vysledek
    mov eax,[Cislo1]
    mov ebx,[Cislo2]
    add eax,ebx
    mov [Vysledek],eax
    
    ; Převedu Vysledek na text do VysledekText
    mov eax,[Vysledek]
    mov ebx,10
    mov edi,VysledekText
    call NumToAscii
    
    ; Vytisknu vysledek
    
    mov ebx,VysledekText	   ; ukazatel na text do ebx
    mov esi,ebx            ; uložím ho ještě do esi
    xor edx,edx
    
    .next:
    inc edx                ;v edx počítáme počet znaků, co budeme tisknout
    lodsb                  ;načteme znak do al a k esi přičteme 1
    or al,al               ;jsme už na konci řetězce (al==0)
    jnz .next              ;ne? přičteme další znak
    mov byte [esi-1],0xa   ;zapíšeme místo nulového byte na konci řetězce znak nového řádku
    
    
    mov eax,4              ;systémové volání write( ebx = KAM, ecx = CO, edx = KOLIK )
    mov ecx, ebx           ;v ebx byla adresa řetězce
    mov ebx,1              ;STDOUT
                           ;v edx již je počet znaků
    int 0x80               ;přerušení
    
    
    
    ; konec programu
    mov eax, 1
    mov ebx, 0
    int 0x80
    
    
    ;--------------
    ;NumToAscii
    ;--------------
    ; eax = 32b číslo
    ; ebx = základ soustavy
    ; edi = pointer na buffer, kam bude uložen text
    ;--------------
    
    NumToAscii:
    pushad
    xor esi,esi
    .smycka_prevodu:
    xor edx,edx
    div ebx
    call HexDigit
    push edx
    inc esi
    test eax,eax
    jnz .smycka_prevodu
    cld
    .smycka_zapis:
    pop eax
    stosb
    dec esi
    test esi,esi
    jnz .smycka_zapis
    popad
    ret
    HexDigit:
    cmp dl,10
    jb .mensi
    add dl,'A'-10
    ret
    .mensi:
    or dl,'0'
    ret
    
    
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;; DATA
    
    SECTION .data
    
    VysledekText TIMES 20 db 0
    Cislo1 dd 8
    Cislo2 dd 2
    Vysledek dd 0
    
    Věřím v jednoho Boha.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.