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