Advertisement
Guest User

Untitled

a guest
Jun 11th, 2019
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. dosseg
  2. .model small
  3. .stack 200h
  4. .data
  5. a1  dw  5
  6. b1  dw  ?
  7. c1  dw  ?
  8. res dw 0
  9. Sa1 db      'Input A: $'
  10. Sb1 db      0ah,'Input B: $'
  11. Sc1 db      0ah,'Input C: $'
  12. Sres    db      0ah,'Res=$'
  13.  
  14. ; ВВОД ДАННЫХ ЧЕРЕЗ КОНСОЛЬ
  15. cr = 0dh ;
  16. lf = 0ah ;
  17. string    db  255, 0, 255 dup (?)
  18. errmsg    db  'Недопустимый символ, можно '
  19.     db  'использовать только цифры',cr,lf,'$'
  20.     negflag   dw  ?
  21. .code
  22.  
  23. IntegerIn  proc
  24. start: mov ah,0ah;
  25. lea dx,string
  26. int 21h
  27. xor ax,ax;
  28. lea si,string+2;
  29. mov negflag,ax;
  30. cmp byte ptr [si],'-';
  31. jne m2;
  32. not negflag;    
  33.     inc si;
  34.     jmp m3;
  35. m2:     cmp byte ptr [si],'+';
  36.     jne m3;
  37.     inc si;
  38. m3:     cmp byte ptr [si],cr;
  39.     je  ex1
  40.     cmp byte ptr [si],'0';
  41.     jb  err1;
  42.     cmp byte ptr [si],'9';
  43.     ja  err1;
  44.     mov bx,10;
  45.     mul bx
  46.     sub byte ptr [si],'0';
  47.     add al,[si];
  48.     adc ah,0
  49.     inc si;
  50.     jmp m3;
  51. err1:   lea  dx,errmsg
  52.     mov ah,9
  53.     int 21h
  54.     jmp start;
  55. ex1:   cmp negflag,0;
  56.     je  ex;
  57.     neg ax;
  58. ex:    ret
  59. IntegerIn  endp
  60.  
  61. IntegerOut  proc
  62.     xor cx,cx;
  63.     mov bx,10;
  64.     cmp ax,0;
  65.     jge m;
  66.     neg ax;
  67.     push ax;
  68.     mov ah,2;
  69.     mov dl,'-'
  70.     int 21h
  71.     pop ax;
  72. m:     inc cx;
  73.     xor dx,dx;
  74.     div bx;
  75.     push dx;
  76.     or  ax,ax;
  77.     jnz m;
  78. m1:    pop dx;
  79.     add dx,'0';
  80.     mov ah,2;
  81.     int 21h
  82.     loop m1;
  83.     ret;
  84. IntegerOut  endp
  85. ;РЕШЕНИЕ, С КОТОРЫМ ЕСТЬ ПРОБЛЕМЫ
  86. Solve   proc near
  87.     Push bp
  88.     mov bp, sp
  89.    
  90.     mov ax, [bp+10] ;res
  91.     mov bx, [bp+8]  ;c1
  92.     mov cx, [bp+6]  ;b1
  93.     mov dx, [bp+4]  ;a1
  94.    
  95.     cmp cx, dx
  96.     jg metka1
  97. metka1:
  98.     cmp bx, cx
  99.     jg metka2
  100. metka2:
  101.     add ax, 1
  102.     pop bp
  103.     ret 4 ;(?)
  104. Solve   endp
  105.  
  106. Programm:
  107.     mov ax,@Data
  108.     mov ds,ax
  109.     mov a1, ax
  110.     Mov  ah,09
  111.     Lea dx,Sa1
  112.     Int 21h  
  113.     call IntegerIn ;ВВОД A1
  114.     mov b1,ax
  115.     Mov  ah,09  
  116.     Lea dx,Sb1
  117.     Int 21h
  118.     call IntegerIn ;ВВОД B1
  119.     mov c1,ax
  120.     Mov  ah,09  
  121.     Lea dx,Sc1  
  122.     Int 21h
  123.     call IntegerIn ;ВВОД C1
  124.     ;решение
  125.     push a1 ;[bp+4]
  126.     push b1 ;[bp+6]
  127.     push c1 ;[bp+8]
  128.     push res ;[bp+10]
  129.     call solve
  130.     mov res, ax ;из ax (который у нас в процедуре был) мы передаем значение в res
  131.  
  132.     ;вывод результата RES
  133.     Mov  ah,09  
  134.     Lea dx,Sres  
  135.     Int 21h  
  136.     mov ax,res ;хммм...
  137.     call IntegerOut
  138.  
  139.     mov ax, 4C00h
  140.     int 21h
  141.     end Programm
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement