Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn Phí
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn PhíĐăng Nhập

VỮNG TIN - TIẾP BƯỚC - THÀNH CÔNG


descriptionThầy cho em hỏi ? EmptyThầy cho em hỏi ?

more_horiz

Code:

inxau macro tbao
LOCAL tbao
   mov ah,  9
   lea dx, tbao
   int 21h
    endm
clrscr   macro
   push   ax
   mov      ah,   0fh
   int      10h
   mov      ah,   00h
   int      10h
   endm
_stack      segment      stack; Khai báo doan toan phan
         db   100h    dup(?)
_stack      ends
data       segment

         n       dw   ?
         sopt   DW   ?
         chiso   dw   ?
         so      dw   0
         sum      dw   0
         a      dw   100   dup   (0)
         m1      db   'so luong phan tu: $'
         m2      db   0ah,0dh,'day so =$'
         m3      db   0ah,0dh,' A[$'
         m4      db   '] = $'
         m5      db   0ah,0dh,'cac so vua vao =$'
         m6      db   '  $'
         m7      db   0ah,0dh,'Day so da sap xep : $'
         m8      db   0ah,0dh,'Cac so nguyen to : $'
         m9      db   0ah,0dh,'Cac so hoan hao : $'
         m11      db   0ah,0dh,'Cac so palindrome : $'
data      ends
code      segment
         assume   cs:code, ds:data, ss:_stack
         start:
         mov      ax,   data
         mov      ds,   ax
         clrscr
         inxau   m1
         ;Nhap so chu so
         mov      ah,   1
         int      21h
         and      al,   0fh
         mov      ah,   0
         mov      sopt, ax;chi so vong lap
         mov      chiso,  ax
         mov      cx,     ax       
         mov      bx,   offset   a
         inxau   m2
         mov      n,   0 ;N la chi so cua day
         t1:;Nhap mang
         inxau   m3
         mov      ax,   n
         call   in10
         inxau   m4
         mov      so,   0
         call   nhap
         mov      ax,   so
         mov      word ptr [bx], ax
         inc      n
         add      bx,   2
         loop   t1
         ;in day
         inxau   m5
         mov      cx,   sopt
         mov      bx,   offset a
         t61:
         mov      ax,   word ptr [bx]
         call   in10
         inxau   m6
         add      bx,   2
         loop   t61
         ;sap xep
         dec      chiso;giam chi so vong lap ngoai di 1 truoc khi sxep
         t2:   
         mov      cx,   sopt
         mov      bx,   offset   a
         dec      cx
         t3:
         mov      ax, word  ptr [bx]
         mov      dx, word  ptr [bx+2]
         cmp      ax,   dx
         jg      t4
         ;neu khong thi hoan vi
         mov      word ptr [bx],    dx
         mov      word ptr [bx+2], ax
         t4:
         add      bx,   2
         loop   t3;vong lap trong luon chay sopt-1 vong
         dec      chiso
         jnz      t2;cu moi vong lap ngoai, thi vong lap trong phai chay sopt-1 vong
         
         inxau   m7
         call    inday
         inxau   m8
         call   inngto
         inxau   m9
         call   inhhao
         inxau   m11
         call   inpal
         mov      ah,   1
         int      21h
         mov      ah,   4ch
         int      21h

inday      proc
         push   ax
         push   bx
         push   cx
         mov      cx,   sopt
         mov      di,   offset a
         t6:
         mov      ax,   word ptr [di]
         call   in10
         inxau   m6
         add      di,   2
         loop   t6
         pop      cx
         pop      bx
         pop      ax
           ret
inday      endp   

inngto      proc
         push   ax
         push   bx
         push   cx
         mov      cx,   sopt
         mov      di,   offset a
       ht6:
         mov      so,   0
         mov      ax,   word ptr [di]
         mov      so,   ax
         call   ngto
         cmp      si,   0
         je      ht10
         call   in10
         inxau  m6
      ht10:
         add      di,   2
         loop   ht6
         pop      cx
         pop      bx
         pop      ax
           ret
inngto      endp

inhhao      proc
         push   ax
         push   bx
         push   cx
         mov      cx,   sopt
         mov      di,   offset a
    ht7:
         mov      so,   0
         mov      ax,   word ptr [di]
         mov      so,   ax
         call   hoanhao
         inxau   m6
         add      di,   2
         loop   ht7
         pop      cx
         pop      bx
         pop      ax
           ret
inhhao      endp

inpal      proc
         push   ax
         push   bx
         push   cx
         mov      cx,   sopt
         mov      di,   offset a
    kt1:
         mov      so,   0
         mov      ax,   word ptr [di]
         mov      so,   ax
         call   palindrome
         inxau   m6
         add      di,   2
         loop   kt1
         pop      cx
         pop      bx
         pop      ax
           ret
inpal      endp
ngto      proc
         push   ax
         push   bx
         push   cx
         push   dx
         mov      si,   0;khong phai so nguyen to
         mov      ax,   so
         mov      cx,   ax
          shr      cx,   1 ; so/2
    h2:
          cmp      cx,   1
          je      h3
          xor      dx,   dx
          div      cx
          and      dx,   dx; ZF=0 bo
         jz      h4
         mov      ax,   so
         loop   h2   
     h3:       
         ;call    in10      ; so la so nguyen to
         inc      si
     h4:   
           pop      dx
         pop      cx
         pop      bx
         pop      ax
           ret
ngto        endp      


hoanhao      proc
         push   ax
         push   bx
         push   cx
         push   dx
         mov      sum, 1 ; tong ban dau bang 1
         mov      ax,   so
         mov      cx,   ax
          shr      cx,   1 ; so/2
      h5:
          xor      dx,   dx
          div      cx
          and      dx,   dx ; ZF=1 thi cong ax vao sum
          jnz      h6
          add      sum, ax
      h6:
          cmp      cx, 2 ; khi cx=3 xuong gap loop se tru 1( cx=2 da test roi)
          jle    h7   
          mov      ax,   so
          loop   h5
       h7:
          mov      ax,   so
          cmp      ax,   sum
          jne      h8
         call    in10      ; so la so hoan hao
        
       h8:
           pop      dx
         pop      cx
         pop      bx
         pop      ax
           ret
hoanhao    endp      

palindrome   proc
         push   ax
         push   bx
         push   cx
         push   dx
         push   di
         mov      ax,   so
         mov      di, 0
          mov      cx,   0 ; so chu so
          mov      bx,   10
       k1:      
          xor      dx,   dx
          div      bx
          push   dx
          inc      cx
          and      ax,   ax
          jnz    k1
          ;lay ra tu stack
          mov      di, cx
          cmp      di,   1
          je      k4
          push   bp
          mov      bp,   sp
          shl      cx,   1
          add    bp,   cx
          mov      ax,   0
          mov      cx,   di
       k3:
          mul      bx
          mov      dx, word ptr ss:[bp]
          add      ax,   dx
          sub      bp,   2
          loop   k3
          cmp      ax,   so
          jne    k2
           call   in10
       k2:
           pop      bp
           mov      cx,   di
       k4:
           pop      dx
           loop   k4   
           pop      di
           pop      dx
         pop      cx
         pop      bx
         pop      ax
           ret
palindrome  endp      
 nhap   proc   ;nhap so co dau
       push   bx
       push   cx
       push   dx
       push    si
       mov      bx,   10
       xor      cx,   cx ;Xoa CX ve 0
       mov      si,   cx; ban dau SF=0
    l1:
       mov      ah,   1
       int      21h
       cmp      al,   13
       je      het
       cmp      al,   '-'
       jne      t11
       inc      si   ;SF=1
       jmp      l1
       
    t11:
       cmp      al,   '0'
       jl      l1
       cmp      al,   '9'
       jg      l1   
       xor      ah,   ah ;phai xoa AH ve 0
       and      al,   0fh
       xchg   ax,   cx
       mul      bx
       add      cx,   ax
       jmp      l1
    het:
       and      si,   si
       jz      t22
       neg      cx
    t22:
       mov      ax,   cx
        mov      so,   ax
        pop      si
       pop      dx
       pop      cx
       pop      bx   
        ret

 nhap endp
 
 in10   proc
       push   ax;in ax so co dau
        push   bx
       push   cx
       push   dx
       mov      bx,   10
       mov      cx,   0;cx dem so chu so cua ax
       and    ax,   ax
       jns      l3
       push   ax
       mov      al,   '-'
       mov      ah,   0eh
       int      10h
       pop      ax
       neg      ax
    l3:
       mov      dx,   0
       div      bx
       push   dx
       inc      cx
       cmp      ax,   0
       jnz      l3
       ;lay ra tu stack de in
       mov      ah,   2
    printf:
       pop      dx
       or      dl,   30h   
       int      21h   
       loop   printf   
       pop      dx
       pop      cx
       pop      bx
       pop      ax   
       ret
 in10 endp
        code   ends
      end      start




Thầy giúp em tách từng chương trình con trong chương trình trên ạ! như chương trình tìm số nguyên tố, số hoàn hảo,..
em cảm ơn ạ !

descriptionThầy cho em hỏi ? EmptyRe: Thầy cho em hỏi ?

more_horiz
Mình rất vui khi bạn tham gia xây dựng diễn đàn. Những vấn đề bạn khó khăn mình sẽ hỗ trợ. Tuy nhiên, do thời gian có hạn nên những việc cơ bản như thế bạn nên làm vì nếu khi bạn code được như thế chắc rằng bạn sẽ tách được.

descriptionThầy cho em hỏi ? EmptyRe: Thầy cho em hỏi ?

more_horiz
em cảm ơn thầy ạ!

descriptionThầy cho em hỏi ? EmptyRe: Thầy cho em hỏi ?

more_horiz
privacy_tip Permissions in this forum:
Bạn không có quyền trả lời bài viết
power_settings_newLogin to reply