abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 05:11 | IT novinky

    Home Assistant včera představil svůj nejnovější oficiální hardware: Home Assistant Connect ZBT-2 pro připojení zařízení na sítích Zigbee nebo Thread.

    Ladislav Hagara | Komentářů: 5
    včera 19:44 | Nová verze

    Byla vydána verze 9.1 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 informačním videu.

    Ladislav Hagara | Komentářů: 1
    včera 17:44 | IT novinky

    Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,809 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější superpočítač v Evropě JUPITER Booster s výkonem 1,000 exaFLOPS je na čtvrtém místě. Nejvýkonnější český superpočítač C24 klesl na 192. místo. Karolina, GPU partition klesla na 224. místo a Karolina, CPU partition na 450. místo. Další přehledy a statistiky na stránkách projektu.

    Ladislav Hagara | Komentářů: 9
    včera 17:22 | IT novinky

    Microsoft představil Azure Cobalt 200, tj. svůj vlastní SoC (System-on-Chip) postavený na ARM a optimalizovaný pro cloud.

    Ladislav Hagara | Komentářů: 0
    včera 12:00 | IT novinky

    Co způsobilo včerejší nejhorší výpadek Cloudflare od roku 2019? Nebyl to kybernetický útok. Vše začalo změnou oprávnění v jednom z databázových systémů a pokračovalo vygenerováním problém způsobujícího konfiguračního souboru a jeho distribucí na všechny počítače Cloudflare. Podrobně v příspěvku na blogu Cloudflare.

    Ladislav Hagara | Komentářů: 3
    18.11. 23:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) první RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.

    Ladislav Hagara | Komentářů: 0
    18.11. 23:22 | Komunita

    Eugen Rochko, zakladatel Mastodonu, tj. sociální sítě, která není na prodej, oznámil, že po téměř 10 letech odstupuje z pozice CEO a převádí vlastnictví ochranné známky a dalších aktiv na neziskovou organizaci Mastodon.

    Ladislav Hagara | Komentářů: 0
    18.11. 19:44 | Nová verze

    Byla vydána nová major verze 5.0 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v obsáhlých poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    18.11. 14:00 | Upozornění

    Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.

    Ladislav Hagara | Komentářů: 13
    18.11. 04:22 | Pozvánky

    Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou

    … více »
    SoutezKasiopea | Komentářů: 1
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (23%)
     (15%)
     (23%)
     (15%)
     (17%)
    Celkem 372 hlasů
     Komentářů: 17, poslední včera 21:57
    Rozcestník

    Dotaz: assembler secteni cisla

    15.1.2006 02:45 _change
    assembler secteni cisla
    Přečteno: 453×
    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.