Advertisement
nguyenvanquan7826

Nhập xuất số thập phân trong Assembly

Sep 19th, 2013
824
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model small
  2. .stack 100
  3. .data
  4.     CLRF db 13, 10, '$'
  5. .code
  6.     main proc      
  7.         mov ax, @data
  8.         mov ds, ax                          
  9.         call inputDec                      
  10.        
  11.         push ax         ; luu Ax lai
  12.         mov ah, 9       ; xuong dong
  13.         lea dx, CLRF
  14.         int 21h
  15.                         ; lay Ax ra
  16.         pop ax
  17.         call outputDec  
  18.        
  19.         mov ah, 4ch
  20.         int 21h
  21.        
  22.     main endp
  23.    
  24.     inputDec proc
  25.         ; Vao: nhap vao so
  26.         ; Ra: So luu trong Ax
  27.         push bx
  28.         push cx
  29.         push dx
  30.        
  31.         batDau:
  32.             mov ah, 2
  33.             xor bx, bx
  34.             xor cx, cx
  35.             mov ah, 1
  36.             int 21h
  37.             cmp al, '-'
  38.             je dauTru
  39.             cmp al, '+'
  40.             je dauCong
  41.             jmp tiepTuc
  42.            
  43.             dauTru:
  44.                 mov cx, 1
  45.            
  46.             dauCong:
  47.                 int 21h
  48.            
  49.             tiepTuc:
  50.                 cmp al, '0'
  51.                 jnge khongPhaiSo    ; khong lop hon hoac bang
  52.                 cmp al, '9'
  53.                 jnle khongPhaiSo    ; Khong nho hon hoac bang
  54.                 and ax, 000fh       ; doi thanh chu so
  55.                 push ax             ; cat vao ngan xep
  56.                 mov ax, 10
  57.                
  58.                 mul bx              ; ax = tong*10
  59.                 mov bx, ax          
  60.                 pop ax
  61.                 add bx, ax          ; tong = tong*10 + so
  62.                 mov ah, 1
  63.                 int 21h
  64.                 cmp al, 13          ; da enter chua?
  65.                 jne tiepTuc         ; nhap tiep
  66.                
  67.                 mov ax, bx          ; chuyen KQ ra ax
  68.                 or cx, cx           ; co phai so am khong
  69.                 je ra
  70.                 neg ax              ; neu la so am thi doi ax ra so am
  71.                
  72.             ra:
  73.                 pop dx
  74.                 pop cx
  75.                 pop bx  
  76.                
  77.                 ret
  78.                
  79.             khongPhaiSo:
  80.                 mov ah, 2
  81.                 mov dl, 0dh
  82.                 int 21h
  83.                 mov dl, 0ah
  84.                 int 21
  85.                 jmp batDau
  86.                
  87.                
  88.     inputDec endp
  89.    
  90.     outputDec proc
  91.         push bx
  92.         push cx
  93.         push dx
  94.        
  95.         cmp ax, 0   ;   neu ax > 0 tuc la khong phai so am ta doi ra day
  96.         jge doiRaDay
  97.         push ax
  98.         mov dl, '-'
  99.         mov ah, 2
  100.         int 21h
  101.         pop ax
  102.         neg ax  ; ax = -ax
  103.        
  104.         doiRaDay:
  105.             xor cx, cx  ; gan cx = 0
  106.             mov bx, 10  ; so chia la 10
  107.             chia:
  108.                 xor dx, dx  ; gan dx = 0
  109.                 div bx      ; ax = ax / bx; dx = ax % bx
  110.                 push dx
  111.                 inc cx
  112.                 cmp ax, 0   ; kiem tra xem thuong bang khong chua?
  113.                 jne chia    ; neu khong bang thi lai chia
  114.                 mov ah, 2
  115.             hien:
  116.                 pop dx
  117.                 or dl, 30h
  118.                 int 21h
  119.                 loop hien
  120.                
  121.                 pop dx
  122.                 pop cx
  123.                 pop bx
  124.                 ;pop ax
  125.         ret
  126.        
  127.     outputDec endp
  128.    
  129. end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement