Một số bài tập và hướng dẫn lập trình hệ thống Assembly (Phần 1) - 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 1)

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

Bài viết liên quan

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é!

Bình Luận

Back To Top