Một số bài tập và hướng dẫn lập trình hệ thống Assembly (Phần 2) - Kỹ thuật Xe Cộ
  1. »
  2. Tìm kiếm cho: Một số bài tập và hướng dẫn lập trình hệ thống Assembly (Phần 2)

Một số bài tập và hướng dẫn lập trình hệ thống Assembly (Phần 2)

Bài viết liên quan

bai tap lap trinh he thong assembly

Mình xin tiếp tục chia sẻ phần 2 vài bài tập lập trình hệ thống Assembly và code của nó. Chúc các bạn học tập tốt, nếu có thắc mắc các bạn có thể để lại bình luận để cùng mọi người trao đổi ^^

1. Tính tổng 2 số a và b

     inxau macro tbao        lea dx,tbao        mov ah,9        int 21h        endm    _stack segment stack        dw 100 dup(0)    _stack ends    data segment        m1 db 10,13,'a=$'        m2 db 10,13,'b=$'        m3 db 10,13,'ket qua=$'        m4 db '.5$'        so dw 0        a dw 0        b dw 0        du dw 0        data ends    code segment        assume cs:code, ds:data, ss:_stack        begin:        mov ax,data        mov ds,ax        ; nhap a        inxau m1        call nhap        mov bx,so        mov a,bx        ;nhap b        inxau m2        call nhap        mov bx,so        mov b,bx        ;cx=ax*bx        inxau m3        call tong        call in10        mov ah,1        int 21h        mov ah,4ch        int 21h     nhap proc        push ax        push bx        push cx        push dx        mov bx,10        xor cx,cx        mov si,0        l1:        mov ah,1        int 21h        cmp al,13        je het        cmp al,8        jnz so_am        and cx,cx        jz nodiv        xor dx,dx        mov ax,cx        jmp ctro        nodiv:        xor si,si        ctro:        push cx        mov cx,1        mov ah,10        mov dl,20h        int 10h        pop cx        jmp l1        so_am:        cmp al,'-'        jne nap        mov si,1        jmp l1        nap:        cmp al,'0'        jl l1        cmp al,'9'        jg l1        and al,0fh        xor ah,ah        xchg ax,cx        mul bx        add cx,ax        jmp l1        het:        and si,si        jz soduong        neg cx        soduong:        mov so,cx        pop dx        pop cx        pop bx        pop ax        ret        nhap endp     tong proc        push ax        push bx        push cx        push dx        mov ax,a        mov bx,b        add ax,bx        mov so,ax        pop dx        pop cx        pop bx        pop ax        ret        tong endp     in10 proc        push ax        push bx        push cx        push dx        mov ax,so        xor cx,cx        mov bx,10        cmp ax,0        jge duong        push ax        mov al,'-'        mov ah,14        int 10h        pop ax        neg ax        duong:        xor dx,dx        div bx        push dx        inc cx        cmp ax,0        jnz duong        ;in ra        mov ah,2        inra:        pop dx        or dl,30h        int 21h        loop inra        pop dx        pop cx        pop bx        pop ax        ret        in10 endp     code ends     end begin

2. Tính hiệu 2 số a và b

     code segment    assume cs:code    org 100h    start : jmp over    msg1 db 'nhap a=$'    msg2 db 10,13,'nhap b=$'    msg3 db 10,13 ,'Hieu hai so la :$'    over:    mov ah,9    lea dx,msg1    int 21h    mov ah,1    int 21h    mov bl,al    mov ah,9    lea dx,msg2    int 21h    mov ah,1    int 21h    mov cl,al    mov ah,9    lea dx,msg3    int 21h    cmp cl,bl    jae truonghop2    sub bl,cl    jmp hieu    truonghop2: ;in dau tru    mov ah,2    mov dl,'-'    int 21h    sub bl,cl    neg bl    hieu:    ;in hieu    add bl,30h    mov ah,2    mov dl,bl    int 21h    int 20h    code ends    end start

3. Tính trung bình cộng 2 số có 5 chữ số a và b

     inxau macro tbao        lea dx,tbao        mov ah,9        int 21h        endm    _stack segment stack        dw 100 dup(0)    _stack ends    data segment        m1 db 10,13,'a=$'        m2 db 10,13,'b=$'        m3 db 10,13,'ket qua=$'        m4 db '.5$'        so dw 0        a dw 0        b dw 0        du dw 0        data ends    code segment        assume cs:code, ds:data, ss:_stack        begin:        mov ax,data        mov ds,ax        ; nhap a        inxau m1        call nhap        mov bx,so        mov a,bx        ;nhap b        inxau m2        call nhap        mov bx,so        mov b,bx        ;cx=ax*bx        inxau m3        call tbcong               mov ah,1        int 21h        mov ah,4ch        int 21h     nhap proc        push ax        push bx        push cx        push dx        mov bx,10        xor cx,cx        mov si,0        l1:        mov ah,1        int 21h        cmp al,13        je het        cmp al,8        jnz so_am        and cx,cx        jz nodiv        xor dx,dx        mov ax,cx        jmp ctro        nodiv:        xor si,si        ctro:        push cx        mov cx,1        mov ah,10        mov dl,20h        int 10h        pop cx        jmp l1        so_am:        cmp al,'-'        jne nap        mov si,1        jmp l1        nap:        cmp al,'0'        jl l1        cmp al,'9'        jg l1        and al,0fh        xor ah,ah        xchg ax,cx        mul bx        add cx,ax        jmp l1        het:        and si,si        jz soduong        neg cx        soduong:        mov so,cx        pop dx        pop cx        pop bx        pop ax        ret        nhap endp     tbcong proc        push ax        push bx        push cx        push dx        xor dx,dx        mov ax,a        mov bx,b        add ax,bx        mov cx,2        div cx        mov so,ax        call in10        cmp dx,0        je he        inxau m4         he:        pop dx        pop cx        pop bx        pop ax        ret        tbcong endp     in10 proc        push ax        push bx        push cx        push dx        mov ax,so        xor cx,cx        mov bx,10        cmp ax,0        jge duong        push ax        mov al,'-'        mov ah,14        int 10h        pop ax        neg ax        duong:        xor dx,dx        div bx        push dx        inc cx        cmp ax,0        jnz duong        ;in ra        mov ah,2        inra:        pop dx        or dl,30h        int 21h        loop inra        pop dx        pop cx        pop bx        pop ax        ret        in10 endp     code ends     end begin

Bình Luận

Back To Top