Advertisement
madopew

Untitled

Feb 24th, 2020
1,116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     org 100h
  2.  
  3. start:
  4.     mov ah, $09 ;вывести в консоль таскСтр
  5.     mov dx, taskStr
  6.     int 21h
  7.  
  8.     mov ah, $02 ;перевод каретки (0д) и перенос строки (0а)
  9.     mov dx, $0d0a
  10.     int 21h
  11.  
  12.     mov ah, $09 ;вывести в консоль таскСтр2
  13.     mov dx, taskStr2
  14.     int 21h
  15.  
  16.     mov ah, $02 ;перевод каретки и перенос строки
  17.     mov dx, $0d0a
  18.     int 21h
  19.  
  20.     mov ah, $09 ;вывести в консоль ресСтр
  21.     mov dx, resStr
  22.     int 21h
  23.  
  24.     mov ax, [a] ;сохраняем а в ах
  25.     sub ax, [b] ;отнимаем из а б
  26.     mov cx, $03 ;сохраняем 3 в сх
  27.     mul cx ;умножаем ах на сх, при этом значение старшего байта не важно, весь результат вместится в ах
  28.     mov bx, ax ;временно переносим 3(а-б) в бх, потому что снова надо будет умножать
  29.     mov ax, [c] ;с в ах
  30.     mov cx, $02 ;2 в сх
  31.     mul cx ;с * 2
  32.     ;кстати верхние четыре строки можно заменить на:
  33.     ;mov bx, [c]
  34.     ;shl bx, 1
  35.     ;тем самым можно временно не сохранять 3(а-б) в бх а сразу умножить с на два в бх с помощью сдвига, дальше код идентичен
  36.     add ax, bx ;складываем 3(а-б) и 2с сохраняя в ах
  37.     mov bx, [d] ;д в бх
  38.     sub bx, $01 ;отнимает 1 от д
  39.     div bx ;делаем 3(а-б)+2с на д-1, ответ снова же влазит в ах
  40.  
  41.     add ax, '0' ;так как ответ из одного символа прибавляем КОД символа ноль в аскии, тем самым получим КОД ответа в аскии
  42.     mov dx, ax ;сохраняем ответ в дх для вывода
  43.     mov ah, $02 ;функция вывода символа
  44.     int 21h ;вывод
  45.  
  46.     mov dx, $0d0a ;в аh уже функция вывода символа, дублировать строку не надо поэтому заносим в дх перенос строки
  47.     int 21h ;переносим строку
  48.  
  49.     mov ah, $09 ;вывод ендСтр
  50.     mov dx, endStr
  51.     int 21h
  52.  
  53.     mov ah, $08 ;функция 8 ожидает ввод одного символа со стандартного устройства ввода (клава) и сохраняет его в ал
  54.     int 21h ;так как дальше мы ничего с ним не делаем, программа сразу прерывается, но как бы "нажмите что нибудь чтобы закрыть"
  55.     ret ;обычный return без параметра - возвращает управление операционной системе, чтобы все было чики пуки
  56.  
  57. taskStr db "This program finds result of (3(a-b)+2c)/(d-1)$"
  58. taskStr2 db "Where a=4, b=2, c=3, d=5$"
  59. resStr db "Result is equal to $"
  60. endStr db "Press any key to exit...$"
  61. a dw $04
  62. b dw $02
  63. c dw $03
  64. d dw $05
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement