" "

model trains for beginners 728 x 90 728 x 90

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)


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

Share on Google Plus

About phanmem2019

250 x 250
    Blogger Comment
    Facebook Comment

0 nhận xét:

Đăng nhận xét