thiet ke website

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

lập trình hệ thống assembly

Hôm nay mình xin chia sẻ với các bạn một 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. Nhập tên và in chuỗi ‘XIN CHAO + tên’ ra màn hình

    DSEG SEGMENT
        MSG1 DB 'NHAP VAO TEN CUA BAN : $'
        MSG2 DB 10,13,'XIN CHAO $ !'
        MAX DB 30
         LEN DB ?
         BUFF DB 30 DUP('$')
    DSEG ENDS
    CSEG SEGMENT
        ASSUME CS:CSEG , DS: DSEG
      BEGIN:
        MOV AX ,DSEG
        MOV DS,AX
        MOV AH , 09H
        LEA DX, MSG1
        INT 21H
        MOV AH, 0AH
        LEA DX, MAX
        INT 21H
        MOV AH,02H
        MOV DX,1500H
        INT 10H
        MOV AH,09H
        LEA DX,MSG2
        INT 21H
        MOV AH,09H 
        LEA DX,BUFF
        INT 21H
        MOV AH,08H
        INT 21H
        MOV AH,4CH
        INT 21H
    CSEG ENDS
    END BEGIN

2. Nhập vào một chuỗi, xuất chuỗi đảo ngược ra màn hình

     dseg segment
    m1 db 'xuat chuoi tu A den Z: $'
    m2 db  10,13,'xuat chuoi dao nguoc: $'
    dseg ends
    sseg segment
    db 100 dup(?)
    sseg ends
    cseg segment
    assume cs: cseg, ds:dseg, ss:sseg
    start:
    mov ax, dseg
    mov ds,ax

    xor ax,ax
    xor cx,cx

    mov ah ,09h
    lea dx,m1
    int 21h

    mov dl, 'A'
    mov cl, 26

    xuat:
    mov ah, 02h
    int 21h
    push ax
    inc dl
    loop xuat

    mov ah, 09h
    lea dx,m2
    int 21h

    xor cx, cx
    mov cl, 26

    xuatdaonguoc:
    mov ah, 02h
    pop dx
    int 21h
    loop xuatdaonguoc

    exit:
    mov ah, 08h
    int 21h
    mov ah, 4ch
    int 21h
    cseg ends
    end start

3. Nhập vào chuỗi ký tự thường, xuất ra chuỗi đã in hoa

     DSEG SEGMENT
       
    msg1 DB 'Hay nhap chuoi ky tu thuong: $'
    msg2 DB 10, 13, 'Chuoi in hoa la: $'
    DEM DW ?

    DSEG ENDS

    SSEG SEGMENT STACK 'STACK'
       
    DW 256 DUP(?)

    SSEG ENDS

    CSEG SEGMENT
                                       
    ASSUME CS: CSEG, DS: DSEG, SS: SSEG
    start: MOV AX, DSEG
    MOV DS, AX

    MOV AH, 09h
    LEA DX, msg1
    INT 21h

    XOR CX, CX

    nhap: MOV AH, 01
    INT 21h
    CMP AL, 0Dh ; (hoac dung CMP AX,010Dh)
    JZ inra
    SUB AX,20H
    PUSH AX
    INC CX
    JMP nhap

    inra: MOV AH, 09h
    LEA DX, msg2
    INT 21h

    MOV BX,1
    MOV DEM,CX

    intiep:

    XOR DX,DX
    MOV DX,0112H
    ADD DX,DEM

    MOV AH,02H
    SUB DX,BX
    INC BX
    INT 10H

    POP AX
    MOV AH, 02H
    MOV DL,AL
    INT 21h
    LOOP intiep

    MOV AH, 08h
    INT 21h

    MOV AH, 4Ch
    INT 21h

    CSEG ENDS
    END start

4. Nhập vào một ký tự, in ra ký tự kề sau nó

     DSEG SEGMENT
        MSG1 DB 'NHAP VAO MOT KY TU : $'
        MSG2 DB 10,13,'KY TU KE TIEP KY TU VUA NHAP LA : $'
        SYM DB ?
    DSEG ENDS

    CSEG SEGMENT
        ASSUME CS:CSEG , DS:DSEG
        BEGIN:
        MOV AX,DSEG
        MOV DS,AX
       
        MOV AH,09H
        LEA DX,MSG1
        INT 21H
       
        MOV AH,01H
        INT 21H
       
        MOV SYM,AL
           
        MOV AH,09H
        LEA DX,MSG2
        INT 21H
            
        MOV DL,SYM
        ADD DL,1
        MOV AH,02H
        INT 21H
       
        MOV AH,08H
        INT 21H
       
        MOV AH,4CH
        INT 21H
    CSEG ENDS
        END BEGIN

5. Xuất một chuỗi từ A->Z và chuỗi đảo ngược từ Z->A

     DSEG SEGMENT
        MSG1 DB 'XUAT CHUOI TU A --> Z : $'
        MSG2 DB 10,13,'XUAT CHUOI DAO NGUOC LA : $'
    DSEG ENDS
    SSEG SEGMENT STACK
        DB 100 DUP(?)
    SSEG ENDS   
    CSEG SEGMENT
        ASSUME CS:CSEG,DS:DSEG
       
        START: MOV AX,DSEG
               MOV DS,AX
       
        MOV AH,09H
        LEA DX,MSG1
        INT 21H
       
        XOR DX,DX
        MOV CX,26
        MOV DL,'A'
       
        XUAT1: MOV AH,02H
        INT 21H
        PUSH AX
        INC DL
        LOOP XUAT1
       
        MOV AH,09H
        LEA DX,MSG2
        INT 21H
        XOR CX,CX
        MOV CX,26
       
        XUAT2: POP AX
        MOV DX,AX
        MOV AH,02H
        INT 21H
        XOR DX,DX
        MOV DX,AX
        LOOP XUAT2
       
        EXIT:MOV AH,08H
        INT 21H
        MOV AH,4CH
        INT 21H

    CSEG ENDS
    END START

6. Xuất ra ngày, tháng, năm

     DSEG SEGMENT 
       
        MSG1 DB 'HOM NAY LA : $'
        thu     db     'SunMonTueWedThuFriSat $'
        St_date db     20, 0, 20 dup(0)
        ngay DB ?
        thang DB ?
        nam DW ?    
    DSEG ENDS

    SSEG SEGMENT
        DB 100 DUP (?)
    SSEG ENDS   

    CSEG SEGMENT
       
        ASSUME  CS:CSEG , DS:DSEG
        START: MOV AX,DSEG
        MOV DS,AX
       
        LEA SI,St_date
        MOV AH,09H
        LEA DX,MSG1
        INT 21H
       
        MOV AH,2AH
        INT 21H
    ;Vào:AH=2Ah
    ;Ra:AL=thu trong tun(0=C.nhat,6=T.bay)
    ;DL=ngày(1-31)
    ;DH=thang(1-12)
    ;CX=nam(1980-2099)
       
        XOR AH,AH
        MOV ngay,DL
        MOV thang,DH
        MOV nam,CX
        
       
        MOV BL,3
        MUL BL
       
        
        MOV SI,AX   
        MOV CX,3
       
        _THU:
         MOV AH, 02H
         mov DL,    thu[SI]
        int 21h
        inc SI
        loop _THU
       
        MOV AH,02H
        MOV DL,0
        INT 21H
       
        _NGAY:
        MOV AL,ngay
        XOR AH,AH
        MOV BL,10
        DIV BL
       
        ADD AH,30H
        ADD AL,30H
        MOV BH,AH
       
        MOV AH,02H
        MOV DL,AL
        INT 21H
        MOV AH,02H
        MOV DL,BH
        INT 21H
       
        MOV AH,02H
        MOV DL,'-'
        INT 21H
       
        _THANG:
        MOV AL,thang
        XOR AH,AH
        MOV BL,10
        DIV BL
       
        ADD AH,30H
        ADD AL,30H
        MOV BH,AH
       
        MOV AH,02H
        MOV DL,AL
        INT 21H
        MOV AH,02H
        MOV DL,BH
        INT 21H
       
       
       
        MOV AH,02H
        MOV DL,'-'
        INT 21H
       
       
        MOV AX,nam
        MOV BX,10
       
        XOR CX,CX
        MOV CX,4
              
        _NAM:
       
        XOR DX,DX
        DIV BX
        PUSH DX
        LOOP _NAM
       
        XOR CX,CX
        MOV CX,4  
       
        _XUATNAM:
        POP DX
        ADD DL,30H
        MOV AH,02H
        INT 21H
       
        LOOP _XUATNAM      
       
        EXIT:
        MOV AH,08H
        INT 21H
       
    CSEG ENDS
    END START

7. Xuất ra giờ hệ thống

     DSEG SEGMENT
    Time_Buf DB '00:00:00$'
    DSEG ENDS

    CSEG SEGMENT
     ASSUME: CS:CSEG,DS:DSEG

    START:MOV AX, DSEG
    MOV DS, AX


    MOV AH, 2Ch
    INT 21h

    ;AH = 2Ch
    ;Ra: CH = gio
    ;CL = phut
    ;DH = giay
    ;DL = % giay


    MOV AL, CH
    MOV AH, 0
    MOV DL, 10
    DIV DL


    ADD AL, 30h
    ADD AH, 30h
    MOV Time_Buf, AL
    MOV Time_Buf+1, AH


    MOV AL, CL
    MOV AH, 0
    MOV DL, 10
    DIV DL

    ADD AL, 30h
    ADD AH, 30h
    MOV Time_Buf+3, AL
    MOV Time_Buf+4, AH


    MOV AL, DH
    MOV AH, 0
    MOV DL, 10


    DIV DL

    OR AX, 3030h
    MOV Time_Buf+6, AL
    MOV Time_Buf+7, AH

    mov ah,02h  ;Di chuyen
    mov dx,1545h;con tro toi
    int 10h     ;dong 12 (0c) cot 21 (15)
           

    MOV AH, 9
    LEA DX, Time_Buf

    INT 21h
    mov ah,08h
    int 21h
    MOV AH, 4Ch
    INT 21h

    CSEG ENDS
    END START

Nếu có thắc mắc cứ thoải mái để lại bình luận phía dưới nhé!

Thiet ke logo

Bài viết liên quan

Những website viết code trực tuyến cho dân lập trình

Những website viết code trực tuyến cho dân lập trình

Ngoài cách viết code bằng các phần mềm soạn thảo thông thường, bạn có thể sử dụng các công cụ trực tuyến. Lúc đó, bạn sẽ dễ dàng có thể chia sẻ code cho bạn bè mình thông qua các URL. Jsbin.com JS Bin là…

[Java cơ bản] Bài 42: String (Phần 1)

[Java cơ bản] Bài 42: String (Phần 1)

Ở loạt bài tiếp theo, video này sẽ hướng dẫn các bạn khái niệm String, xâu chuỗi trong Java. Những hướng dẫn cơ bản liên quan đến String.

[Java cơ bản] Kết thúc series hướng dẫn

[Java cơ bản] Kết thúc series hướng dẫn

Cảm ơn anh Việt đã thực hiện xong series hướng dẫn Java cơ bản này. Đây là clip cuối trong series, chúc các bạn học tốt!

[Java cơ bản] Bài 43: String (Phần 2)

[Java cơ bản] Bài 43: String (Phần 2)

Video này sẽ hướng dẫn tiếp các phương thức của String. Chúc các bạn học tập thật tốt.

Bình luận ()