daily pastebin goal
80%
SHARE
TWEET

Untitled

a guest Mar 20th, 2019 52 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. segment data
  2.     nl: db 10,13,'$' ; new line
  3.     ; 13 - carriage return, 10 - line feed
  4.     message: db 10,13,'Enter 2 hexadecimal numbers: $'
  5.  
  6. segment stack stack
  7.     resb 256
  8.  
  9. segment code
  10.     ..start:
  11.         mov cx,2
  12.  
  13.     enter2Numbers:
  14.         push cx ; counter
  15.         mov ax,data
  16.         mov ds,ax ; нельзя двигать в дс напрямую
  17.        
  18.         mov dx,message
  19.         mov ah,9
  20.         int 21h
  21.  
  22.         xor ax,ax ; clear reg
  23.         mov ah,1h ; 1h ввод одного символа из терминала
  24.         int 21h
  25.         mov dl,al ; по дефолту в ал записывается с клавы
  26.         sub dl,30h ; вычитаем из числа 30h (48 в дес)
  27.        
  28.         cmp dl,9h ; если цифра - то ниче не делаем, если буква - вычитаем 7
  29.         jle inputSecondSym
  30.         sub dl,7h
  31.  
  32.     inputSecondSym: ; input second symbol
  33.         mov cl,4h ; двигаем на 4 бита влево, справа 4 нуля
  34.         shl dl,4h
  35.         int 21h
  36.         sub al,30h
  37.    
  38.         cmp al,9h
  39.         jle m2
  40.         sub al,7h ; from letter to digit
  41.  
  42.     m2:
  43.         add dl,al ; ex: dl: 10110000
  44.                   ;     al: 00001101
  45.                   ;  newdl: 10111101
  46.         jmp outputBinary
  47.          
  48.     outputBinary:
  49.         push dx
  50.         mov dx,nl
  51.         mov ah,9h
  52.         int 21h
  53.         pop dx
  54.        
  55.         mov cx,8 ; сдвиг
  56.        
  57.         shl dx,8h
  58.         mov bx,dx
  59.         mov ah,2h ; 2 - вывод одного символа
  60.         l1:
  61.             xor dx,dx
  62.             sal bx,1 ; арифм сдвиг влево первого числа и оно появляется в cf
  63.             adc dl,30h ; добавляет в дл 30 и cf, чтоб превратить в цифру
  64.             int 21h
  65.             loop l1 ; луп сам уменьшает cx на 1 (каунтер)
  66.     pop cx
  67.     dec cx
  68.     jnz enter2Numbers ; если не ноль то прыгаем, иначе идем дальше
  69.  
  70.     mov ax,4c00h ; 4c to ah код выхода прог 00 to al что выход без ошибок
  71.     int 21h
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
 
Top