Pereiti prie turinio

Rekomenduojami pranešimai

užduotis skamba paprastai, įvesti eilutę ir išvesti mažųjų raidžių skaičių.Esmė tame,kad kažkodėl man neišveda jokio skaičiaus..Net gerai nežinau kur kaupti/didinti skaičių bei kaip jį išvesti..Tikiuosi atsiras koks nusimanantis :<

 

.model small

buferiodydis   EQU 121

.stack  100h

.data 
   bufDydis DB buferiodydis
   nuskaite  DB ?
   eilute    DB buferiodydis dup (?)
   kiek      DB 0


   rezult    DB 'Yra tiek mazuju raidziu : $'
   ivesk     DB 'Iveskite eilute: $'
   enteris   DB 13, 10, '$'

.code

Pradzia:
   MOV ax, @data
   MOV ds, ax

;eilutes skaitymas
   MOV ah, 9
   MOV dx, offset ivesk
   INT 21h

   MOV ah, 0ah
   MOV dx, offset bufdydis
   INT 21h

   MOV ah, 9
   MOV dx, offset enteris
   INT 21h


; algoritmas


   MOV cl, nuskaite
   MOV bx, offset eilute
   MOV dl, 'a'
   MOV dh, 'z'

ciklas:         

   CMP [ds:bx], dl
   JB Netinka
   CMP [ds:bx], dh
   JA Netinka
   inc kiek
Netinka:
   INC bx


   DEC cl
   CMP cl, 0
   JNE ciklas    

   MOV byte ptr [ds:bx], '$'
  ; spausdinimas  


   MOV ah, 9
   MOV dx, offset rezult
   INT 21h


   MOV ah, 4Ch
   MOV al, 0
   INT 21h

END Pradzia

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Su Emu rašau , bet leidžiu per TASM'ą , tuo lab ,kad Emu kažkodėl rodo klaida vietom, nors realiai ten klaidos nėra..

 

Edit: Gal kas gali paaiškint man kelis dalykus :

1) JG = JA? ir JL = JB?

2) Žiūrint pavyzdį,kuris yra tam linke,kur yra panašiai programa į maniškę nesuprantu šiektiek vienos dalies :

   mov dl, 10          ; čia kam įmeta tą reikšmę?
   div dl              ; ir kam dalina, verčia reikšmę į ASCII?
   mov [rezult2 + 2], ah
   add [rezult2 + 2], 030h
   xor ah, ah
   div dl
   mov [rezult2 + 1], ah
   add [rezult2 + 1], 030h
   mov [rezult2], al
   add [rezult2], 030h

Redagavo C_Linas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

masm kazkada buvo mano hobis, turiu kai ka ir parases.

 

1) JG = JA? ir JL = JB?

 

Tikrai ne. Jump Greater naudoja Sign flag'a, o Jump Above jo nenaudoja, - naudok masm ir nesuk tam galvos

 

2)

mov dl, 10 ; čia kam įmeta tą reikšmę? - i DL registra

div dl ; ir kam dalina, verčia reikšmę į ASCII? - AX = AL / DL

mov [rezult2 + 2], ah

Nuoroda į pranešimą
Dalintis kituose puslapiuose

masm kazkada buvo mano hobis, turiu kai ka ir parases.

 

1) JG = JA? ir JL = JB?

 

Tikrai ne. Jump Greater naudoja Sign flag'a, o Jump Above jo nenaudoja, - naudok masm ir nesuk tam galvos

 

2)

mov dl, 10 ; čia kam įmeta tą reikšmę? - i DL registra

div dl ; ir kam dalina, verčia reikšmę į ASCII? - AX = AL / DL

mov [rezult2 + 2], ah

 

 

Univere užduotis TASM'u atsiskaitynėti reikia (pas kažkurį dėstytoją galima su NASM ant Linux'o rašyti).

 

Linai, http://uosis.mif.vu.lt/~julius/2011Rud/KompArch/Pratybos/Pvz3.asm užmesk akį į tą procedūrą, ten pakomentuota normaliai. :-)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...