SHARE
TWEET

Untitled

a guest Nov 12th, 2019 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;7. Paraðykite programà, kuri visus faile rastus skaitmenis pakeistø þodþiais („1“ -> „vienas“,...)
  2. ;ir rezultatà iðsaugotø kitame faile.
  3.  
  4. .model small
  5.  
  6. .386
  7.  
  8. .stack 100h
  9.  
  10. .data
  11.              
  12.     DuomenuFailas db 200 dup (0)
  13.     RezultatuFailas db 200 dup (0)
  14.     SkaitBuf db 10 dup ('$')
  15.     RasBuf   db 100 dup ('$')
  16.     DeskDuom dw ?
  17.     DeskRez  dw ?
  18.     Char     dw ?
  19.    
  20.     ;Skaiciai
  21.     nulis   db "nulis$"
  22.     vienas  db "vienas$"
  23.     du      db "du$"
  24.     trys    db "trys$"
  25.     keturi  db "keturi$"
  26.     penki   db "penki$"
  27.     sesi    db "sesi$"
  28.     septyni db "septyni$"
  29.     astuoni db "astuoni$"
  30.     devyni  db "devyni$"
  31.    
  32.     ;Errors
  33.     ErrorOpenReadM db "Atidarant duomenu faila ivyko klaida$"
  34.     ErrorOpenWriteM db "Atidarant duomenu faila ivyko klaida$"
  35.     ErrorReadM db "Skaitant duomenis ivyko klaida$"
  36.     ErrorWriteM db "Rasant duomenis i faila ivyko klaida$"
  37.     ErrorCloseWriteM db "Uzdarant rezultatu faila ivyko klaida$"
  38.     ErrorCloseReadM db "Uzdarant duomenu faila ivyko klaida$"
  39.     ErrorParDataM db "Parametruose nenurodyti failu pavadinimai$"
  40.     HelpM   db "Programa nuskaito duoto duomenu failo teksta ir jame esancius skaitmenis perraso i duomenu faila zodziais. Programos paleidimui: programa.exe DuomenuFailas.txt RezultatuFailas.txt$"
  41.    
  42.    
  43. .code
  44.   pradzia:
  45.     MOV ax, @data
  46.     MOV ds, ax
  47.    
  48.     MOV bx, 82h
  49.     MOV si, offset DuomenuFailas
  50.    
  51.     cmp byte ptr es:[80h], 0
  52.     JE ErrorParData
  53.    
  54.     cmp word ptr es:[82h], '?/'
  55.     JE Help
  56.    
  57. gaunamPavDuomenu:
  58.     cmp byte ptr es:[bx], ' '
  59.     JE tikrinamDelTarpu
  60.    
  61.     mov dl, byte ptr es:[bx]
  62.     mov [si], dl
  63.    
  64.     inc bx
  65.     inc si
  66.     jmp gaunamPavDuomenu
  67.    
  68. tikrinamDelTarpu:
  69.     inc bx
  70.     ;inc si
  71.     cmp byte ptr es:[bx], ' '
  72.     JE tikrinamDelTarpu
  73.  
  74.     MOV si, offset RezultatuFailas
  75.    
  76. gaunamPavRez:
  77.     cmp byte ptr es:[bx], ' '
  78.     JE openfiles
  79.    
  80.     mov dl, byte ptr es:[bx]
  81.     mov [si], dl
  82.     inc bx
  83.     inc si
  84.     jmp gaunamPavRez
  85.    
  86.    
  87. openfiles:
  88.     ;Atidaryti skaitymui              
  89.     MOV ah, 3Dh
  90.     MOV al, 00
  91.     MOV dx, offset DuomenuFailas           
  92.     INT 21h
  93.     JC  ErrorOpenRead
  94.     MOV DeskDuom, ax            
  95.      
  96.    
  97.     ;Atidaryti rasymui              
  98.     MOV ah, 3Ch
  99.     MOV cx, 0
  100.     MOV dx, offset RezultatuFailas
  101.     INT 21h
  102.     JC  ErrorOpenWrite
  103.     MOV DeskRez, ax              
  104.                    
  105.     ;Skaitymas
  106. read:
  107.     MOV bx, DeskDuom
  108.     CALL    ReadBuf
  109.     CMP ax, 0
  110.     JE  uzdarytiRasymui   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  111.                  
  112.     ;Duomenu keitimas
  113.     MOV cx, ax
  114.     MOV si, offset SkaitBuf
  115.     ;MOV    di, offset ResBuf
  116.    
  117.     PUSH ax
  118.    
  119. dirbk:
  120.     PUSH cx
  121.     MOV dl, [si]
  122.     CMP dl, '0'
  123.     JB  tesk
  124.     CMP dl, '9'
  125.     JA  tesk
  126.    
  127.     CMP dl, '0'
  128.     JE nulisc
  129.     CMP dl, '1'
  130.     JE vienasc
  131.     CMP dl, '2'
  132.     JE duc
  133.     CMP dl, '3'
  134.     JE trysc
  135.     CMP dl, '4'
  136.     JE keturic
  137.     CMP dl, '5'
  138.     JE penkic
  139.     CMP dl, '6'
  140.     JE sesic
  141.     CMP dl, '7'
  142.     JE septynic
  143.     CMP dl, '8'
  144.     JE astuonic
  145.     CMP dl, '9'
  146.     JE devynic
  147.    
  148. nulisc:
  149.     MOV ah, 40h
  150.     MOV bx, DeskRez
  151.     MOV dx, offset nulis
  152.     MOV cx, 5
  153.     INT 21h
  154.     JC  ErrorWrite
  155.     JMP dummy    
  156.    
  157. vienasc:
  158.     MOV ah, 40h
  159.     MOV bx, DeskRez
  160.     MOV dx, offset vienas
  161.     MOV cx, 6
  162.     INT 21h
  163.     JC  ErrorWrite
  164.     JMP dummy
  165.  
  166. duc:
  167.     MOV ah, 40h
  168.     MOV bx, DeskRez
  169.     MOV dx, offset du
  170.     MOV cx, 2
  171.     INT 21h
  172.     JC  ErrorWrite
  173.     JMP dummy
  174.  
  175. trysc:
  176.     MOV ah, 40h
  177.     MOV bx, DeskRez
  178.     MOV dx, offset trys
  179.     MOV cx, 4
  180.     INT 21h
  181.     JC  ErrorWrite
  182.     JMP dummy
  183.    
  184. readpart:
  185.     JMP read
  186.    
  187. keturic:
  188.     MOV ah, 40h
  189.     MOV bx, DeskRez
  190.     MOV dx, offset keturi
  191.     MOV cx, 6
  192.     INT 21h
  193.     JC  ErrorWrite
  194.     JMP dummy
  195.    
  196. penkic:
  197.     MOV ah, 40h
  198.     MOV bx, DeskRez
  199.     MOV dx, offset penki
  200.     MOV cx, 5
  201.     INT 21h
  202.     JC  ErrorWrite
  203.     JMP dummy  
  204.    
  205. sesic:
  206.     MOV ah, 40h
  207.     MOV bx, DeskRez
  208.     MOV dx, offset sesi
  209.     MOV cx, 4
  210.     INT 21h
  211.     JC  ErrorWrite
  212.     JMP dummy
  213.    
  214. septynic:
  215.     MOV ah, 40h
  216.     MOV bx, DeskRez
  217.     MOV dx, offset septyni
  218.     MOV cx, 7
  219.     INT 21h
  220.     JC  ErrorWrite
  221.     JMP dummy
  222.    
  223. astuonic:
  224.     MOV ah, 40h
  225.     MOV bx, DeskRez
  226.     MOV dx, offset astuoni
  227.     MOV cx, 7
  228.     INT 21h
  229.     JC  ErrorWrite
  230.     JMP dummy
  231.    
  232. devynic:
  233.     MOV ah, 40h
  234.     MOV bx, DeskRez
  235.     MOV dx, offset devyni
  236.     MOV cx, 6
  237.     INT 21h
  238.     JC  ErrorWrite
  239.     JMP dummy
  240.    
  241.      
  242. tesk:      
  243.     MOV ah, 40h
  244.     MOV bx, DeskRez
  245.     MOV Char, dx
  246.     MOV dx, offset Char
  247.     MOV CX, 1
  248.     INT 21h
  249. dummy:    
  250.     POP cx
  251.     INC si
  252.     DEC cx
  253.     JE baigesloop
  254.     JMP dirbk
  255.    
  256. baigesloop:
  257.     POP ax
  258.     CMP ax, 10
  259.     JE  readpart
  260.  
  261.  
  262. Pabaiga:
  263.  
  264.     uzdarytiRasymui:
  265.     MOV ah, 3Eh
  266.     MOV bx, DeskRez
  267.     INT 21h
  268.     JC  ErrorCloseWrite
  269.    
  270.     uzdarytiSkaitymui:
  271.     MOV ah, 3Eh
  272.     MOV bx, DeskDuom
  273.     INT 21h
  274.     JC  ErrorCloseRead 
  275.  
  276. destroy:
  277.     MOV ah, 4Ch
  278.     MOV al, 0
  279.     INT 21h
  280.  
  281. Help:
  282.     mov ah, 9
  283.     mov dx, offset HelpM
  284.     int 21h
  285.     JMP destroy
  286.                
  287. ErrorParData:
  288.     mov ah, 9
  289.     mov dx, offset ErrorParDataM
  290.     int 21h
  291.     JMP destroy
  292.                
  293. ErrorCloseRead:
  294.     mov ah, 9
  295.     mov dx, offset ErrorCloseReadM
  296.     int 21h        
  297.     JMP destroy
  298.                
  299. ErrorCloseWrite:
  300.     mov ah, 9
  301.     mov dx, offset ErrorCloseWriteM
  302.     int 21h
  303.     JMP destroy
  304.  
  305. ErrorWrite:
  306.     mov ah, 9
  307.     mov dx, offset ErrorWriteM
  308.     int 21h
  309.     JMP destroy
  310.    
  311. ErrorOpenRead:
  312.     mov ah, 9
  313.     mov dx, offset ErrorOpenReadM
  314.     int 21h
  315.     JMP destroy
  316.    
  317. ErrorOpenWrite:
  318.     mov ah, 9
  319.     mov dx, offset ErrorOpenWriteM
  320.     int 21h
  321.     JMP destroy
  322.    
  323. ;Proceduros
  324.  
  325. ;Skaitymo procedura
  326. PROC ReadBuf
  327.     PUSH cx
  328.     PUSH dx
  329.    
  330.     MOV ah, 3Fh
  331.     MOV cx, 10
  332.     MOV dx, offset SkaitBuf
  333.     INT 21h
  334.     JC  ErrorRead
  335.  
  336.   SkaitykBufPabaiga:
  337.     POP dx
  338.     POP cx
  339.     RET
  340.  
  341. ErrorRead:
  342.    
  343.     mov ah, 9
  344.     mov dx, offset ErrorReadM
  345.     int 21h
  346.    
  347.     MOV ax, 0
  348.     JMP SkaitykBufPabaiga
  349. ReadBuf ENDP   
  350. ;;;;;;;;;;;;;;;;;;;    
  351.    
  352.    
  353. END pradzia
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top