Assembler 8086
-
Jerrynko
Amateur
- Príspevky: 14
- Registrovaný: 13 dec 2008, 13:09
- Bydlisko: Michalovce
- Kontaktovať používateľa:
Assembler 8086
Ahojte.... Potreboval by som pomoct s touto ulohou......ak sa to da... v assembleri 8086 potrebujem urobit program:
Načítajte z klávesnice číslo 1-9. Iný vstup je neplatný, číslo sa zadáva znova. Na Obrazovke vytlačte pyramídu so základňou, ktorej šírka je rovná načítanej hodnote, na vykreslenie použite znak *.
Načítajte z klávesnice číslo 1-9. Iný vstup je neplatný, číslo sa zadáva znova. Na Obrazovke vytlačte pyramídu so základňou, ktorej šírka je rovná načítanej hodnote, na vykreslenie použite znak *.
Jo to som ten algoritmus poriesil ja blb.
Tu mas uz funkcnu verziu, otestovanu - fasm kompiluje. Pri TASM budes muset zmenit par opkodov (asi popridavat "offset" a ak nechces vytvarat EXE a segmenty data, zlinkuj to tlink /t)
Ako som uz spomenul, ocenil by som mensi financny prispevok na paypal... dneska uz assembleristov nenajdete 
Kód: Vybrať všetko
org 100h
jmp start
sprava1 db 'Zadaj cislo od 1 do 9:$'
crlf db 13,10,'$'
start:
mov ax,cs ;datovy segment = segment kodu
mov ds,ax
mov es,ax
mov ax,03 ;nastav 80x25
int 10h
mov ah,9
mov dx,sprava1 ;(alebo "mov dx,offset sprava1" pre TASM)
int 21h
rpt:
xor ax,ax
int 16h
cmp ah,2 ;citanie alfanumerickej casti - klavesy pod escape, 1, 2, 3
jb rpt
cmp ah,0Ah ;citanie scan kodu az po 9
ja rpt
mov al,0 ;kasli na ascii kod
pusha
mov ah,9
mov dx,crlf ;novy riadek
int 21h
popa
dec ah ;1-9
xor al,al
mov cl,ah
xor ch,ch ;cx = od 1 do 9
mov ax,1 ;vycisti registre :D
kresli:
push ax
push cx
mov cx,ax
mov ah,0Ah
mov al,'*'
int 10h
pop cx
pop ax
cmp ax,cx
je konec
pusha
mov ah,09h
mov dx,crlf
int 21h
popa
inc ax
jmp kresli
konec:
;;;konec. cakaj na lubovolnu klavesu a ukonci
mov ah,09h
mov dx,crlf
int 21h
xor ax,ax
int 16h
int 20h ;konec v DOS COM, v exe daj mov ah, 4Ch int 21hno asi hej...ten profak je blb....a musi to byt v asm...ta ked budes mat cas a zrobis to fakt klobuk dolu pred tebou...diky moc...pomozes velmi
//autoeditácia príspevku ( 27 Apr 2009, 21:34 )
no asi hej...ten profak je blb....a musi to byt v asm...ta ked budes mat cas a zrobis to fakt klobuk dolu pred tebou...diky moc...pomozes velmi
//autoeditácia príspevku ( 27 Apr 2009, 21:34 )
no asi hej...ten profak je blb....a musi to byt v asm...ta ked budes mat cas a zrobis to fakt klobuk dolu pred tebou...diky moc...pomozes velmi
ASM86
Zdravim.... Hladam dobru dusu, ktorá vie programovat v assembleri86. Ak sa taka najde, by som ju poprosil o spravenie tohto programu :Z klávesnice načítajte vstupný retazec ukončený znakom konca riadku a rozhodnite, ci patri do jazyka L={xxR |x€{a,b,c}+}. prosim ozvite sa niekto.
Simonak urcite "blb" niejeboy157 napísal:no asi hej...ten profak je blb....a musi to byt v asm...ta ked budes mat cas a zrobis to fakt klobuk dolu pred tebou...diky moc...pomozes velmi
//autoeditácia príspevku ( 27 Apr 2009, 21:34 )
no asi hej...ten profak je blb....a musi to byt v asm...ta ked budes mat cas a zrobis to fakt klobuk dolu pred tebou...diky moc...pomozes velmi
btw dajak vela prvakov z tuke tu je, ci tie zadania davate na kazde forum na ktore natrafite?
Jo, profak vysokej skoly - som si myslel ze vam to dal niekto vysinuty na strednej.
Hja vela stastia, tu ti davam onen krkolomny kod a prikladam aj funkcnu dos-com, len mu nevrav ze ti to 16rocny nakodil, by bola hanba co?
Tak snad to pojde, funkcne pod FASM. Zadavaj cisla ktorych sucet spolu je mensi ako 65535. A az tie rozdiely medzi suctom cisla 1 + cisla 2, a cisla 2 + cisla 3 nie su moc velke, inac to rapluje.Ale algoritmus si isto poriesis sam ak by ti nevyhovel.
Pre TASM budes muset zmenit dobrych par riadkov a ak sa nechces srat so segmentami, tlinkuj s parametrom /t aby to vyplulo binarku a nie tu mz ohavu. Cize nieco ako "tlink /t lol.com", nevim - TASM nepouzivam bo je to predpotopny sragor N-teho rangu na stvrtu.
Jo a ked tak kukam na ostatne assembler temy tuna v sekcii Programovanie, dufam ze si nepleties assembler z rady 8080 (kompatibilita na urovni PMD-85, komunistickych "CPU" MHB8080, Z80 a inych chutoviek), a 8086, cize zaklad architektury na ktorom bezi tvoje PC (teda ak nepouzivas macintosh alebo nebodaj Amiga, ARM atd.), pretoze do masinoveho kodu 8080 sa nerozumiem (naco?).
Pre TASM budes muset zmenit dobrych par riadkov a ak sa nechces srat so segmentami, tlinkuj s parametrom /t aby to vyplulo binarku a nie tu mz ohavu. Cize nieco ako "tlink /t lol.com", nevim - TASM nepouzivam bo je to predpotopny sragor N-teho rangu na stvrtu.
Kód: Vybrať všetko
;Mediany
;(c) 2009 by inflater
org 100h
use16
jmp start
nazdar db 'Vypocet medianov, (c) 2009 Inflater (http://inflater.wz.cz)$'
hlaska1 db 13,10,'Zadaj 1. cislo: $'
hlaska2 db 13,10,'Zadaj 2. cislo: $'
hlaska3 db 13,10,'Zadaj 3. cislo: $'
chyba db 13,10,13,10,'Chyba, dve alebo tri cisla su zhodne.$'
mdi1 db 13,10,13,10,'Median je cislo 1.$'
mdi2 db 13,10,13,10,'Median je cislo 2.$'
mdi3 db 13,10,13,10,'Median je cislo 3.$'
klavesa db 13,10,'Stlac lubovolnu klavesu...$'
crlf db 13,10,'$'
cislo1 dw 0
cislo2 dw 0
cislo3 dw 0
temp dw 0
bafer1: times 8 db 0
bafer2: times 5 db 0
start:
push cs ;ak kompilujes do exe tak dufam ze vies co mas spravit s tymto tu ;-)
pop ds ;teda ak texty nestrcis do ineho segmentu
push ds
pop es
mov ax,03 ;80x25
int 10h
;chu****
mov ah,09
mov dx,nazdar
int 21h
mov ah,9
mov dx,hlaska1
int 21h
call Parsuj
mov ax,[temp]
mov [cislo1],ax
mov ah,09h
mov dx,hlaska2
int 21h
call Parsuj
mov ax,[temp]
mov [cislo2],ax
mov ah,09h
mov dx,hlaska3
int 21h
call Parsuj
mov ax,[temp]
mov [cislo3],ax
mov ax,[cislo1]
cmp [cislo2],ax
je konec
mov ax,[cislo3]
cmp [cislo2],ax
je konec
cmp [cislo1],ax
je konec
;rataj
mov ax,[cislo1]
add ax,[cislo2]
mov bx,[cislo2]
add bx,[cislo3]
cmp ax,bx
jae prve_vacsie
jbe druhe_vacsie
prve_vacsie:
mov ax,[cislo1]
cmp ax,[cislo2]
jb med1
jmp med2
druhe_vacsie:
mov ax,[cislo2]
cmp ax,[cislo3]
jb med2
jmp med3
med1:
mov ah,09h
mov dx,mdi1
int 21h
jmp @f
med2:
mov ah,09h
mov dx,mdi2
int 21h
jmp @f
med3:
mov ah,09h
mov dx,mdi3
int 21h
jmp @f
konec:
mov ah,09h
mov dx,chyba
int 21h
@@:
mov ah,9
mov dx,klavesa
int 21h
xor ax,ax
int 16h
mov ah,9
mov dx,crlf
int 21h
mov ah,4Ch
int 21h
Parsuj:
mov al,6
mov di,bafer1
stosb
mov ah,0Ah
mov dx,bafer1 ;tuna je CS = DS (adresa ds:dx). pri exe toto uprav
int 21h ;citaj 5 znakov
mov si,bafer1 ;buffer z klavesnice
add si,2 ;preskoc dva bajty MAX a LEN
mov cx,5 ;5 razz
mov di,bafer2 ;presun cislo
rep movsb
push bx
push cx
xor ax,ax
mov bx,bafer2
LoopStringToHex:
cmp byte[bx],'0'
jb EndLoopStringToHex
cmp byte[bx],'9'
ja EndLoopStringToHex
mov cx,ax
shl ax,3
add ax,cx
add ax,cx
movzx cx,byte[bx]
sub cl,'0'
add ax,cx
add bx,1
jmp LoopStringToHex
EndLoopStringToHex:
pop cx
pop bx
mov [temp],ax
ret- Prílohy
-
- median.zip
- (508 Bajtov) 40 stiahnutí
ASM86
Sewas inflater... Nevedel by si mi prosimta spravit programik? Z klávesnice načítajte vstupný retazec ukončený znakom konca riadku a rozhodnite, ci patri do jazyka L={xxR |x€{a,b,c}+}.
//autoeditácia príspevku ( 02 May 2009, 0:01 )
Sewas inflater... Nevedel by si mi prosimta spravit programik? Z klávesnice načítajte vstupný retazec ukončený znakom konca riadku a rozhodnite, ci patri do jazyka L={xxR |x€{a,b,c}+}.
//autoeditácia príspevku ( 02 May 2009, 0:01 )
Sewas inflater... Nevedel by si mi prosimta spravit programik? Z klávesnice načítajte vstupný retazec ukončený znakom konca riadku a rozhodnite, ci patri do jazyka L={xxR |x€{a,b,c}+}.
zadanie
to simonak je super clovek

ponukam 7-10€ niekomu kto mi naprogramuje toto:
Nacitajte z klavesnice retazec znakov ukoncenych znakom konca riadku. Slova vo vstupe su oddelene najmenej jednym znakom medzera.Uvazujte aj prve, resp. posledne slovo vstupu. Urcte pocet slov obsahujucich vsetky znaky 1. slova. Pocet vytlacte desiatkovo.
je potrebna kompilacia v NASM.
platforma i8086
peniaze poslem prevodom na ucet, po skontrolovani zadania, ci je to naozaj to co to ma byt. ak to bude hned v ten den peniaze posielam.
tak ozvite sa cez SS
kto ma zaujem si privyrobit trochu.
Nacitajte z klavesnice retazec znakov ukoncenych znakom konca riadku. Slova vo vstupe su oddelene najmenej jednym znakom medzera.Uvazujte aj prve, resp. posledne slovo vstupu. Urcte pocet slov obsahujucich vsetky znaky 1. slova. Pocet vytlacte desiatkovo.
je potrebna kompilacia v NASM.
platforma i8086
peniaze poslem prevodom na ucet, po skontrolovani zadania, ci je to naozaj to co to ma byt. ak to bude hned v ten den peniaze posielam.
tak ozvite sa cez SS
Re: ASM86
Myslis, ze stredoskolak bude vediet co znamena jazyk L={xxR |x€{a,b,c}+}?Joey_XD napísal:Sewas inflater... Nevedel by si mi prosimta spravit programik? Z klávesnice načítajte vstupný retazec ukončený znakom konca riadku a rozhodnite, ci patri do jazyka L={xxR |x€{a,b,c}+}.
//autoeditácia príspevku ( 02 May 2009, 0:01 )
Sewas inflater... Nevedel by si mi prosimta spravit programik? Z klávesnice načítajte vstupný retazec ukončený znakom konca riadku a rozhodnite, ci patri do jazyka L={xxR |x€{a,b,c}+}.
pozeram, že je tu toho už vela, no niektore zadania vyzeraju fakt hrozne,ja som tiež jeden z tych, ktorý maju s assemblerom 8086 problem, ale tak dostal som dosť lahke zadanie, no časovo to akosi nestiham, keby sa fakt niekto dobry našiel, a pomohol by mi určite by som mu bol velmi vdačný
ak by sa naozaj niekto podujal, tu vam dam aj zadanie
Načitajte z klávesnice reťazec znakov ukončených znakom konca riadku. Slová vo vstupe sú oddelené najmenej jedným znakom medzera. Uvažujte aj prve, resp. posledné slovo vstupu.
Vytlačte zadané slová v opačnom poradí
Fakt by ste mi s tym pomohli
ak by sa naozaj niekto podujal, tu vam dam aj zadanie
Načitajte z klávesnice reťazec znakov ukončených znakom konca riadku. Slová vo vstupe sú oddelené najmenej jedným znakom medzera. Uvažujte aj prve, resp. posledné slovo vstupu.
Vytlačte zadané slová v opačnom poradí
Fakt by ste mi s tym pomohli