Advertisement
Guest User

dobar

a guest
Apr 18th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. TITLE   ********** Treta laboratoriska vezba **********
  2.  
  3. COMMENT *------------------------------------------------
  4.           Programa za konvertiranje mala vo golema bukva
  5.         -------------------------------------------------*
  6.  
  7. .386
  8. .model small, c
  9.  
  10. ;----------------------------------------------------------------
  11. ; Stek segment
  12.  
  13. stack_seg SEGMENT stack
  14.  
  15.     DB 100 DUP(?)
  16.  
  17. stack_seg ENDS
  18.  
  19. ;----------------------------------------------------------------
  20. ; belowtocen segment
  21.  
  22. data_seg SEGMENT USE16 'DATA'
  23.    
  24. vlez    DB  'e'
  25. izlez   DB  1 dup(0)
  26.  
  27. data_seg ENDS
  28.  
  29. ;----------------------------------------------------------------
  30. ; Koden segment
  31.  
  32. code_seg SEGMENT USE16 'CODE'
  33. ASSUME cs:code_seg, ds:data_seg
  34.    
  35. start:        
  36.  
  37.     ; Postavuvanje na adresata na DATA segmentot vo DS
  38.     mov ax, data_seg
  39.     mov ds, ax
  40.  
  41. ;----------------------------------------------------------------
  42. ; Glavna procedura
  43.  
  44. main PROC
  45.        
  46.     mov bx, 'a'     ;Vo BX ja cuvame razlikata (offset)
  47.     sub bx, 'A'     ;pomegju mala i golema bukva  
  48.        
  49.     lea si, vlez
  50.     lea di, izlez
  51.    
  52. pak:    
  53.     mov ah, 0      
  54.     mov al, [si]
  55.    
  56.     cmp al, 'A'
  57.     jb below        ; pomala od A
  58.     cmp al, 'Z'
  59.     jg above        ; pogolema od Z
  60.     push ax
  61.     call toLower    ;golema e, smali ja
  62.     mov [di], ax
  63.     inc di
  64.     jmp next
  65.  
  66. below:  
  67.     cmp al, '0'
  68.     jz kraj         ;nula e, terminirana niza, kraj!
  69.     jmp next    ;ne e bukva
  70.    
  71. above:
  72.     cmp al, 'a'
  73.     jb next     ;ne e bukva
  74.     cmp al,     'z'
  75.     jg next     ;ne e bukva, preskokni ja
  76.     push ax
  77.     call toUpper    ;mala e, zgolemi ja
  78.     mov [di], ax
  79.     inc di
  80. next:
  81.     inc si
  82.     jmp pak
  83.    
  84.    
  85.  
  86.    
  87. kraj:
  88.     nop
  89.  
  90. main ENDP
  91.  
  92. ;----------------------------------------------------------------
  93. ; Kraj na programata
  94.  
  95. ; Interapt za prekin na izvrsuvanjeto, za da se vrati kontrolata na debagerot
  96. mov ax, 04c00h
  97. int 021h
  98.    
  99. ;----------------------------------------------------------------
  100. ; Ostanati proceduri  
  101.    
  102. ; Procedura za pretvaranje mala bukva vo golema
  103. toUpper PROC
  104.  
  105.     mov bp,sp
  106.     mov ax,[bp+2]
  107.     sub ax, bx
  108.    
  109.     ret 2
  110.    
  111. toUpper ENDP
  112.  
  113. toLower PROC
  114.     mov bp, sp
  115.     mov ax, [bp+2]
  116.     add ax, bx
  117.    
  118.     ret 2
  119.  
  120. toLower ENDP
  121.  
  122. code_seg ENDS
  123.  
  124. END start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement