Tema: Re: Pagelbekit mokantiems Asembleriu programint
Autorius: poviliuxs
Data: 2009-12-13 17:55:16
keisk profesija

blin, skamba kaip chirurgas sakytu: gal kas gali pjuvi cia uz mane 
padaryti? gerbti reikia bent save, jei negerbi kitu.

Papaja wrote:
> Sveiki, taip gavosi, kad kiek beskaiciau tutorialu ir pan. niekaip
> nesuprantu kaip padaryt uzduoti... Uzduotis turi priimti 2 skaicius(po viena
> arba per space abu uzrasyti tai tikrai nesvarbu) 1-masis skaicius turi buti
> pakeistas i antrojo skaiciaus skaiciavimo systema...
> Pvz: Ivedame 3 ir 2, reikia, kad gautume rezultata 11, ivedam 7 ir 4, tai
> turetu buti 13...
> Kolkas turiu programa, kurioje ivedi skaiciu ir gali pakeisti skaiciavimo
> systema tik manuol budu, gal yra mokanciu programuoti kurie galetu padeti
> paeditint sia programa :?
> 
> 
> .model small
> .stack 100h
> .data
>  ivedimo_msg  DB "Iveskite skaiciu: ","$"
>  isvedimo_msg DB "Rezultatas: ","$"
>  enteris      DB 13,10,"$"
>  buff         DB 255
>                    DB 0
>                    DB 255 dup(0)
> .code
>  start:
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ;; Nurodom duomenu pradzia
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>    MOV ax,@data
>    MOV ds,ax
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ;; Pagalbos simboliu ieskojimas argumente
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>  MOV bx, 0081h
>  ieskok:
>  MOV ax, es:[bx]
>  CMP al, 0Dh
>  JE programa
>  CMP ax, 3F2Fh
>  JE pagalba
>  INC bx
>  JMP ieskok
>  pagalba:
>  MOV ah, 9
>  INT 21h
>  JMP endas
> 
> 
>  programa:
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ;; Skaitom
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>  MOV ah, 09h
>  MOV dx, offset ivedimo_msg
>  INT 21h
>  XOR si,si
>  XOR di,di
>  XOR cx,cx
>  XOR dx,dx
>  MOV bx,10
>  MOV ah, 0Ah
>  MOV dx, offset buff
>  INT 21h
>  MOV dx, offset enteris
>  MOV ah, 09h
>  INT 21h
>  MOV si, 1
>  MOV al, buff[si]
>   XOR ah, ah
>    MOV di, ax
>    INC si
>    INC di
>    INC di
>  next:
>   MOV al, buff[si]
>    XOR ah, ah
>    SUB al, '0'
>    CMP al, 9
>    JA endas
>  INC si
>  ADD ax, cx
>  JC endas
>  CMP si, di
>  JE suma
>  MUL bx
>  CMP ax, cx
>  JB endas
>  MOV cx, ax
>  CMP si, di
>  JLE next
>  suma:
>  XOR si, si
>  MOV cx, ax
>  JC endas
>  MOV ax,cx
>  CALL astuntainis
>  JMP endas
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ;; Procedura astuntainis
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>  astuntainis PROC
>  PUSH ax
>  PUSH cx
>  PUSH dx
>  MOV cx, 8    ;;;;;;;;;;;;;;;;;;;;;;;;;;; <- pakeitus skaiciu keicia i tokia
> systema
>  PUSH "$$"
>  ciklas:
>  MOV dx, 0
>  DIV cx
>  PUSH dx
>  CMP ax, 0
>  JNE ciklas
>  MOV ah, 2
>  spausdinimas:
>  POP dx
>  CMP dx, "$$"
>  JE pabaiga
>  ADD dl, '0'
>  INT 21h
>  JMP spausdinimas
>  pabaiga:
>  POP dx
>  POP cx
>  POP ax
>  RET
>  astuntainis ENDP
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ;; Pabaiga
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> 
>  endas:
>  MOV ah, 4ch
>  MOV al, 0
>  INT 21h
> end start
> 
>