tungSfer

final

May 31st, 2021
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.39 KB | None | 0 0
  1. .MODEL Small
  2. .CODE
  3.    
  4.     org 100h
  5.     Jmp Start
  6.     st dw 100                      
  7.     y2 dw 120
  8.     x2 dw 120
  9.     on dw 100
  10.     ent db 13, 13, 13, 10, '$'
  11.     Color db 4 ; mau do
  12.     hcnd db 'Nhap do dai canh doc:  $'
  13.     hcnn db 'Nhap do dai canh ngang:    $'
  14.     tgc db 'Nhap do dai chieu cao:      $'
  15.     th db 'Nhap do dai duong cheo:      $'  
  16.    
  17. Start:
  18.     Mov AH,0h ; thiet lap che do do hoa
  19.     Mov AL,12h ; VGA mode
  20.     Int 10h
  21.    
  22.     ; Nhap so de xac dinh loai hinh can ve
  23.     Mov AX, 0
  24.     Mov AH, 1; Cho 1 phim go vao
  25.     Int 21h
  26.     Push AX
  27.     Mov AH, 9  
  28.     Lea DX, ent; in ra ent (xuong dong)
  29.     Int 21H
  30.     Mov AX, 0
  31.     Pop AX
  32.    
  33.     Cmp AL, '1'
  34.     Je RE       ; Neu bang 1, nhay den nhan RE de ve hinh chu nhat hoac vuong
  35.     Cmp AL, '2'
  36.     Je TRI      ; Neu bang 2, nhay den nhan TRI de ve hinh tam giac
  37.     Cmp AL, '3'
  38.     Je RHOM     ; Neu bang 3, nhay den nhan RHOM de ve hinh thoi
  39.     Cmp AL, '#'
  40.     Je END      ; Neu bang #, nhay den nhan END de ket thuc chuong trinh
  41.     Jmp Start
  42.    
  43.    
  44. RE:
  45.     Call Rectangle
  46.     Jmp Start
  47. TRI:
  48.     Call Triangle
  49.     Jmp Start
  50. RHOM:
  51.     Call Rhombus
  52.     Jmp Start
  53.  
  54.    
  55. ;Ve hinh chu nhat
  56. Rectangle Proc
  57.     Mov AH, 9  
  58.     Lea DX, hcnd
  59.     Int 21H
  60.     Call input ; Nhap chieu cao
  61.     Mov y2, AX
  62.     Add y2, 100
  63.     Mov AH, 9  
  64.     Lea DX, hcnn
  65.     Int 21H
  66.     Call input ; Nhap chieu ngang
  67.     Mov x2, AX
  68.     Add x2, 100
  69.    
  70.     Mov CX,x2 ; CX = x2 - st = do dai canh
  71.     Sub CX,st
  72.     Mov SI,st ; SI: bien dem theo chieu cao
  73.     Mov DI,st ; DI: bien dem theo chieu ngang
  74.     ; Ve canh tren
  75.     TopR:
  76.         Call DrawPixel ; goi chuong trinh con ve diem anh
  77.         Inc DI ;
  78.         Loop TopR
  79.     Mov CX, y2
  80.     Sub CX, st
  81.     Mov SI, st
  82.     ; Ve canh 2 canh ben
  83.     SideR:
  84.         Mov DI, st
  85.         Call DrawPixel
  86.         Mov DI, x2
  87.         Call DrawPixel
  88.         Inc SI
  89.         Loop SideR
  90.     Mov CX, x2
  91.     Sub CX, st
  92.     Mov SI, y2
  93.     Mov DI, st
  94.     ; Ve canh duoi
  95.     BotR:
  96.         Call DrawPixel
  97.         Inc DI ;
  98.         Loop BotR    
  99.     mov ah, 8; Tam dung man hinh de xem hinh
  100.     int 21h
  101.     Mov AH,0 ; Set video mode
  102.     Mov AL,2
  103.     Int 10h
  104. Ret
  105.    
  106. Rectangle Endp
  107.  
  108.  
  109. ;Ve hinh tam giac    
  110. Triangle Proc
  111.     Mov st, 100
  112.     Mov x2, 100
  113.     Mov AH, 9  
  114.     Lea DX, tgc
  115.     Int 21H
  116.     Call input
  117.     Mov y2, AX
  118.     Add y2, 100
  119.    
  120.     Mov CX, y2
  121.     Sub CX, st
  122.     Mov SI, st
  123.     ;Ve 2 canh ben
  124.     SideT:
  125.         Mov DI, st
  126.         Sub st, 1
  127.         Call DrawPixel
  128.         Mov DI, x2
  129.         Add x2, 1
  130.         Call DrawPixel
  131.         Inc SI
  132.         Loop SideT
  133.     Mov CX, x2
  134.     Sub CX, st
  135.     Mov SI, y2
  136.     Mov DI, st
  137.     ; Ve canh duoi
  138.     BotT:
  139.         Call DrawPixel
  140.         Inc DI ;
  141.         Loop BotT    
  142.     Mov ah, 8
  143.     Int 21h
  144.     Mov AH,0
  145.     Mov AL,2
  146.     Int 10h
  147. Ret
  148.    
  149. Triangle Endp
  150.  
  151. ;Ve hinh thoi
  152. Rhombus proc
  153.     Mov st, 100
  154.     Mov x2, 100
  155.     Mov AH, 9  
  156.     Lea DX, th
  157.     Int 21H
  158.     Call input
  159.     Mov y2, AX
  160.     Add y2, 100
  161.    
  162.     Mov CX, y2
  163.     Sub CX, st
  164.     Mov SI, st
  165.     ;Ve 2 canh ben tren
  166.     TopSideRH:
  167.         Mov DI, st
  168.         Sub st, 1
  169.         Call DrawPixel
  170.         Mov DI, x2
  171.         Add x2, 1
  172.         Call DrawPixel
  173.         Inc SI
  174.         Loop TopSideRH
  175.     Mov CX, on
  176.     Sub CX, st
  177.     Add CX, 1
  178.  
  179.     ; Ve 2 canh ben duoi
  180.     BotSideRH:
  181.         Mov DI,st
  182.         Add st, 1
  183.         Call DrawPixel
  184.         Mov DI, x2
  185.         Sub x2, 1
  186.         Call DrawPixel
  187.         Inc SI
  188.         Loop BotSideRH    
  189.     mov ah, 8
  190.     int 21h
  191.     Mov AH,0
  192.     Mov AL,2
  193.     Int 10h
  194. Ret    
  195. Rhombus Endp
  196.  
  197. ;To mau 1 pixel
  198. DrawPixel Proc
  199.     Push AX
  200.     Push CX
  201.     Push DX
  202.     Mov DX, SI
  203.     Mov CX,DI
  204.     Mov AL, Color
  205.     Mov AH,0CH
  206.     Int 10h
  207.     Pop DX
  208.     Pop CX
  209.     Pop AX
  210. Ret  
  211.  
  212. DrawPixel Endp
  213.  
  214. ; Nhap vao 1 so tu nhien    
  215. input Proc
  216.     Push bx
  217.     Push cx
  218.     Push dx
  219.      
  220.     STA:
  221.         Mov ah, 2
  222.         Xor bx, bx
  223.         Xor cx, cx
  224.         Mov ah, 1
  225.         Int 21h
  226.         Cmp al, '-'
  227.         Je SUBT
  228.         Cmp al, '+'
  229.         Je ADDN
  230.         Jmp CON
  231.          
  232.         SUBT:
  233.             Mov cx, 1
  234.          
  235.         ADDN:
  236.             Int 21h
  237.          
  238.         CON:
  239.             Cmp al, '0'
  240.             Jnge NOTN    ; khong lop hon hoac bang
  241.             Cmp al, '9'
  242.             Jnle NOTN    ; Khong nho hon hoac bang
  243.             And ax, 000fh       ; doi thanh chu so
  244.             Push ax             ; cat vao ngan xep
  245.             Mov ax, 10
  246.              
  247.             Mul bx              ; ax = tong*10
  248.             Mov bx, ax          
  249.             Pop ax
  250.             Add bx, ax          ; tong = tong*10 + so
  251.             Mov ah, 1
  252.             Int 21h
  253.             Cmp al, 13          ; da enter chua?
  254.             Jne CON         ; nhap tiep
  255.              
  256.             Mov ax, bx          ; chuyen KQ ra ax
  257.             Or cx, cx           ; co phai so am khong
  258.             Je O
  259.             Neg ax              ; neu la so am thi doi ax ra so am
  260.              
  261.         O:
  262.             Pop dx
  263.             Pop cx
  264.             Pop bx  
  265.              
  266.         Ret
  267.              
  268.         NOTN:
  269.             Mov ah, 2
  270.             Mov dl, 0dh
  271.             Int 21h
  272.             Mov dl, 0ah
  273.             Int 21
  274.             Jmp STA
  275.    
  276. Ret
  277. input Endp
  278.  
  279. END:
  280.     Mov ah, 4CH
  281.     Int 21h
  282. End Start
Add Comment
Please, Sign In to add comment