Advertisement
tungSfer

KTMT_final

May 31st, 2021
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.27 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.    
  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
  29.     Int 21H
  30.     Mov AX, 0
  31.     Pop AX
  32.     ;Mov DL, AL
  33.     ;Mov AH,2
  34.     ;Int 21H
  35.     Cmp AL, '1'
  36.     Je RE
  37.     Cmp AL, '2'
  38.     Je TRI
  39.     Cmp AL, '3'
  40.     Je RHOM
  41.     Cmp AL, '#'
  42.     Je END
  43.     Jmp Start
  44.    
  45.    
  46. RE:
  47.     Call Rectangle
  48.     Jmp Start
  49. TRI:
  50.     Call Triangle
  51.     Jmp Start
  52. RHOM:
  53.     Call Rhombus
  54.     Jmp Start
  55.  
  56.    
  57. ;Ve hinh chu nhat
  58. Rectangle Proc
  59.     Mov AH, 9  
  60.     Lea DX, hcnd
  61.     Int 21H
  62.     Call input
  63.     Mov y2, AX
  64.     Add y2, 100
  65.     Mov AH, 9  
  66.     Lea DX, hcnn
  67.     Int 21H
  68.     Call input
  69.     Mov x2, AX
  70.     Add x2, 100
  71.    
  72.     Mov CX,x2
  73.     Sub CX,st
  74.     Mov SI,st
  75.     Mov DI,st
  76.     ; Ve canh tren
  77.     TopR:
  78.         Call DrawPixel ; goi chuong trinh con ve diem anh
  79.         Inc DI ;
  80.         Loop TopR
  81.     Mov CX, y2
  82.     Sub CX, st
  83.     Mov SI, st
  84.     ; Ve canh 2 canh ben
  85.     SideR:
  86.         Mov DI, st
  87.         Call DrawPixel ; goi chuong trinh con ve diem anh
  88.         Mov DI, x2
  89.         Call DrawPixel ; goi chuong trinh con ve diem anh
  90.         Inc SI
  91.         Loop SideR
  92.     Mov CX, x2
  93.     Sub CX, st
  94.     Mov SI, y2
  95.     Mov DI, st
  96.     ; Ve canh duoi
  97.     BotR:
  98.         Call DrawPixel ; goi chuong trinh con ve diem anh
  99.         Inc DI ;
  100.         Loop BotR    
  101.     mov ah, 8
  102.     int 21h
  103.     Mov AH,0
  104.     Mov AL,2
  105.     Int 10h
  106. Ret
  107.    
  108. Rectangle Endp
  109.  
  110.  
  111. ;Ve hinh tam giac    
  112. Triangle Proc
  113.     Mov st, 100
  114.     Mov x2, 100
  115.     Mov AH, 9  
  116.     Lea DX, tgc
  117.     Int 21H
  118.     Call input
  119.     Mov y2, AX
  120.     Add y2, 100
  121.    
  122.     Mov CX, y2
  123.     Sub CX, st
  124.     Mov SI, st
  125.     ;Ve 2 canh ben
  126.     SideT:
  127.         Mov DI, st
  128.         Sub st, 1
  129.         Call DrawPixel ; goi chuong trinh con ve diem anh
  130.         Mov DI, x2
  131.         Add x2, 1
  132.         Call DrawPixel ; goi chuong trinh con ve diem anh
  133.         Inc SI
  134.         Loop SideT
  135.     Mov CX, x2
  136.     Sub CX, st
  137.     Mov SI, y2
  138.     Mov DI, st
  139.     ; Ve canh duoi
  140.     BotT:
  141.         Call DrawPixel ; goi chuong trinh con ve diem anh
  142.         Inc DI ;
  143.         Loop BotT    
  144.     Mov ah, 8
  145.     Int 21h
  146.     Mov AH,0
  147.     Mov AL,2
  148.     Int 10h
  149. Ret
  150.    
  151. Triangle Endp
  152.  
  153. Rhombus proc
  154.     Mov st, 100
  155.     Mov x2, 100
  156.     Mov AH, 9  
  157.     Lea DX, th
  158.     Int 21H
  159.     Call input
  160.     Mov y2, AX
  161.     Add y2, 100
  162.    
  163.     Mov CX, y2
  164.     Sub CX, st
  165.     Mov SI, st
  166.     ;Ve 2 canh ben tren
  167.     TopSideRH:
  168.         Mov DI, st
  169.         Sub st, 1
  170.         Call DrawPixel ; goi chuong trinh con ve diem anh
  171.         Mov DI, x2
  172.         Add x2, 1
  173.         Call DrawPixel ; goi chuong trinh con ve diem anh
  174.         Inc SI
  175.         Loop TopSideRH
  176.     Mov CX, on
  177.     Sub CX, st
  178.     Add CX, 1
  179.     ;Mov SI, y2
  180.     ; Ve 2 canh ben duoi
  181.     BotSideRH:
  182.         Mov DI,st
  183.         Add st, 1
  184.         Call DrawPixel ; goi chuong trinh con ve diem anh
  185.         Mov DI, x2
  186.         Sub x2, 1
  187.         Call DrawPixel ; goi chuong trinh con ve diem anh
  188.         Inc SI
  189.         Loop BotSideRH    
  190.     mov ah, 8
  191.     int 21h
  192.     Mov AH,0
  193.     Mov AL,2
  194.     Int 10h
  195. Ret    
  196. Rhombus Endp
  197.  
  198. ;To mau 1 pixel
  199. DrawPixel Proc
  200.     Push AX
  201.     Push CX
  202.     Push DX
  203.     Mov DX, SI
  204.     Mov CX,DI
  205.     Mov AL, Color
  206.     Mov AH,0CH
  207.     Int 10h
  208.     Pop DX
  209.     Pop CX
  210.     Pop AX
  211. Ret  
  212.  
  213. DrawPixel Endp
  214.      
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement