Đồ Án Lập Trình Hệ Thống Bài Tập 1 (Assembly) 1. Viết chương trình sử dụng hàm 7, ngắt 21h để nhận 1 ký tự từ bàn phím, dùng 1 biến để lưu trữ ký tự nhận được (do sinh viên tự đặt tên biến), sau đó sử dụng hàm 2, ngắt 21h để in ra màn hình ký tự nhận được đang lưu trong biến ấy. Chương trình phải có đủ các câu thông báo nhập và xuất. Ví dụ: Hay go 1 phim: B Ky tu nhan duoc la: B 2. Làm lại chương trình bài 1 sao cho không cần sử dụng biến để lưu trữ ký tự mà kết quả chạy chương trình vẫn không thay đổi.
Đồ Án Lập Trình Hệ Thống Bài Tập (Assembly) Viết chương trình sử dụng hàm 7, ngắt 21h để nhận ký tự từ bàn phím, dùng biến để lưu trữ ký tự nhận (do sinh viên tự đặt tên biến), sau sử dụng hàm 2, ngắt 21h để in hình ký tự nhận lưu biến Chương trình phải có đủ câu thông báo nhập xuất Ví dụ: Hay go phim: B Ky tu nhan duoc la: B Làm lại chương trình cho không cần sử dụng biến để lưu trữ ký tự mà kết chạy chương trình không thay đổi Viết chương trình nhận ký tự từ bàn phím, sau in hình ký tự kế trước kế sau ký tự vừa nhập Ví dụ: Hay go phim: B Ky tu ke truoc : A Ky tu ke sau : C Viết chương trình cho phép nhập từ bàn phím tên người, in hình chuỗi có dạng sau: Xin chao Ví dụ: Khi chạy chương trình, nhập vào là: Nguyen Van A Chuỗi in hình là: Xin chao Nguyen Van A Viết chương trình cho nhập ký tự từ hình xuất câu thông báo tương ứng sau: - Nếu ký tự nhập ‘S’ hay ‘s’ in “Good morning!” - Nếu ký tự nhập ‘T’ hay ‘t’ in “Good Afternoon!” - Nếu ký tự nhập ‘C’ hay ‘c’ in “Good everning!” Viết chương trình nhập từ bàn phím ký tự thường Sau in hình ký tự từ ký tự nhận đến 'z' cho ký tự có khoảng trống .model small jmp nhap stack 100h lea dx,tb1 data mov ah,9 hienthi: tb1 db 'nhap vao ki tu int 21h mov kitu,al thuong: $' nhap: lea dx,tb4 tb2 db ' $' mov ah,1 mov ah,9 tb3 db 10,13,'nhap lai ki int 21h int 21h tu $' cmp al,'a' lap: tb4 db 10,13, 'chuoi ki tu jl nhaplai mov dl,kitu theo yeu cau la: $' cmp al,'z' mov ah,2 kitu db jg nhaplai int 21h jmp hienthi lea dx,tb2 mov ah,9 code nhaplai: int 21h main proc lea dx,tb3 inc kitu mov ax,@data mov ah,9 cmp kitu,'z' mov ds,ax int 21h jg ketthuc jmp lap ketthuc: mov ah,4ch int 21h main endp end main Không dùng hàm 0Ah/21h, dùng lệnh lặp để viết chương trình nhập vào chuỗi ký tự Sau nhập xong đếm xem chuỗi có ký tự In hình chuỗi nhận số ký tự có chuỗi Ví dụ: S = "Hello world !" ==> Số kí tự chuỗi 13 .MODEL SMALL CMP AL,0DH LEA DX,TB3 STACK 100 JE XU_LY INT 21H DATA MOV DEM DW MANG[BX],AL XOR AX,AX MANG DB 100 INC BX MOV AX,SO_KT DUP(?) LOOP NHAP XOR CX,CX TB1 DB "NHAP XU_LY: KI_TU: CHUOI: $" MOV CX,BX XOR DX,DX TB2 DB 10,13,"IN MOV SO_KT,BX DIV CHIA10 CHUOI: $" PUSH DX TB3 DB 10,13,"SO KT INC CX TRONG CHUOI: $" MOV AH,9 CMP AX,0 SO_KT DW LEA DX,TB2 JNE KI_TU CHIA10 DW 10 INT 21H CODE MOV AH,2 MAIN PROC MOV AX,@DATA MOV AH,2 HIEN_SO: MOV DS,AX POP DX XOR BX,BX ADD DL,30H MOV AH,9 HIEN_THI: INT 21H LEA DX,TB1 MOV INT 21H DL,MANG[BX] LOOP HIEN_SO XOR BX,BX INC BX INT 21H MOV AH,4CH NHAP: LOOP HIEN_THI INT 21H MOV AH,1 MAIN ENDP INT 21H MOV AH,9 END MAIN Viết chương trình cho phép nhập vào chuỗi Sau đó: - Đổi tất ký tự thường thành ký tự hoa in hình - Đổi tất ký tự hoa thành ký tự thường in hình Ví dụ: S = ‘weLcOme To AssEmblY’ In ra: welcome to assembly - WELCOME TO ASSEMBLY MODEL SMALL MANGNHAP DB 100 MAIN PROC STACK 100 DUP (?) DATA MANGTHUONG DB MOV AX,@DATA TB1 DB 'NHAP CHUOI: 100 DUP (?) MOV DS,AX $' MANGHOA DB 100 TB2 DB 10,13, 'CHUOI DUP (?) LEA DX,TB1 KI TU HOA: $' KITU DW MOV AH,9 TB3 DB 10,13, 'CHUOI INT 21H KI TU THUONG: $' ;NHAP CHUOI CODE LEA DI,MANGNHAP MOV CX,0 LAPNHAP: MOV AH,1 INT 21H CMP AL,13 JE DUNGNHAP MOV [DI],AL INC DI INC CX JMP LAPNHAP DUNGNHAP: MOV KITU,CX ;NHAP MANG CHU THUONG LEA DI,MANGNHAP LEA SI,MANGTHUONG MOV CX,KITU LAMLAI: CMP [DI],5AH JLE SSTIEP JMP KHONGCHUYEN SSTIEP: CMP [DI],41H JGE CVTHUONG JMP KHONGCHUYEN CVTHUONG: MOV AX,[DI] ADD AX,20H MOV [SI],AX INC SI INC DI JMP FINI KHONGCHUYEN: MOV AX,[DI] MOV [SI],AX INC DI INC SI FINI: LOOP LAMLAI ;NHAP MANG CHU HOA LEA DI,MANGNHAP LEA SI,MANGHOA MOV CX,KITU LAMLAI1: CMP [DI],61H JGE CVHOA JMP KHONGCHUYEN1 CVHOA: MOV AX,[DI] SUB AX,20H MOV [SI],AX INC SI INC DI JMP FINI1 KHONGCHUYEN1: MOV AX,[DI] MOV [SI],AX INC SI INC DI FINI1: LOOP LAMLAI1 ;IN XAU HOA LEA DX,TB2 MOV AH,9 INT 21H LEA DI,MANGHOA MOV CX,KITU LAPIN: MOV DL,[DI] MOV AH,2 INT 21H INC DI LOOP LAPIN ;IN XAU THUONG LEA DX,TB3 MOV AH,9 INT 21H LEA DI,MANGTHUONG MOV CX,KITU LAPIN1: MOV DL,[DI] MOV AH,2 INT 21H INC DI LOOP LAPIN1 EXIT: MOV AH,4CH INT 21H MAIN ENDP END MAIN Nhập vào chuỗi số, đổi chuỗi thành số, sau cộng hai số, đổi chuỗi xuất chuỗi tổng Ví dụ: S1 = "123" => N1 = 123 S2 = "456" => N2 = 456 N = N1 + N2 = 123 + 456 = 579 => S = "579" (xuất S hình) 10 Nhập số nguyên dương A, B Tính A/B, A*B (không dùng lệnh DIV, MUL) in hình kết Ví dụ: A=18, B=3 Tính A/B: 18 - - - - - - = 0, A/B = (tổng trừ B A = 0) Tính A*B = 18 + 18 + 18 = 54 ;CHUA CO KIEM TRA SO A>B OR B>A ;CHUA CO KIEM TRA CHIA HET HAY KHONG CHIA HET MOV SO1,AX CMP AX,BX JGE LAPTHUONG MOV THUONG,CX MODEL SMALL STACK 100 MOV AH,9 DATA LEA DX,TB2 LEA DX,TB3 TB1 DB 'SO THU NHAT: $' INT 21H MOV AH,9 TB2 DB 10,13,'SO THU HAI : $' CALL NHAPSO MOV AX,TICH MOV SO2,AX CALL HIENTHI TICH2SO: LEA DX,TB4 MOV CX,SO1 MOV AH,9 MOV BX,SO2 INT 21H DEC CX MOV AX,THUONG LAPTICH: CALL HIENTHI INT 21H TB3 DB 10,13, 'TICH HAI SO: $' TB4 DB 10,13, 'THUONG HAI SO: $' TICH DW THUONG DW SOTG DW SO1 DW ADD BX,SO2 SO2 DW CODE MAIN PROC MOV AH,4CH MOV TICH,BX LOOP LAPTICH MOV AX,@DATA MOV DS,AX MOV AH,9 LEA DX,TB1 INT 21H CALL NHAPSO INT 21H NHAPSO PROC THUONG2SO: MOV CX,10 MOV CX,0 START: MOV AX,SO1 MOV AH,1 MOV BX,SO2 INT 21H LAPTHUONG: CMP AL,13 SUB AX,BX JE THOATCTC INC CX SUB AL,30H MOV AH,0 MOV BX,AX NHAPSO ENDP HIENTHI PROC MOV AX,SOTG JNE LAPHT MOV AH,02H INRA: MUL CX XOR CX,CX POP DX ADD AX,BX MOV BX,10 ADD DL,30H MOV SOTG,AX LAPHT: INT 21H JMP START XOR DX,DX LOOP INRA THOATCTC: INC CX RET MOV AX,SOTG DIV BX HIENTHI ENDP MOV SOTG,0 PUSH DX END MAIN RET CMP AX,0 11 Viết chương trình nhập số nhị phân 16 bit A B Sau in hình kết dạng nhị phân: A + B, A – B, A and B, A or B Ví dụ: Nhập số nhị phân A: 10101010 Nhập số nhị phân B: 01010101 A + B = 11111111 A – B MOV DS,AX MOV AH,9 = 01010101 LEA DX,TB3 A and B = 00000000 A or MOV AH,9 INT 21H B = 11111111 LEA DX,TB1 MODEL SMALL INT 21H CALL INSO STACK 100H DATA CALL NHAPSO MOV AX,SOA SOA DW ASUBB: SOB DW MOV SOA,DX SUB AX,SOB LUU DW MOV KQ,AX TB1 DB "NHAP SO MOV AH,9 A: $" LEA DX,TB2 MOV AH,9 TB2 DB 10,13,"NHAP INT 21H LEA DX,TB4 SO B: $" INT 21H TB3 DB 10,13,"A+B= $" CALL NHAPSO CALL INSO TB4 DB 10,13,"A-B= MOV SOB,DX $" MOV AX,SOA TB5 DB 10,13,"A ; AND B= $" _ AANDB: TB6 DB 10,13,"A OR MOV AX,SOA AND AX,SOB B= $" MOV KQ,AX KQ DW AADDB: CODE ADD AX,SOB MOV AH,9 MAIN PROC MOV KQ,AX LEA DX,TB5 MOV AX,@DATA INT 21H MAIN ENDP CALL INSO MOV AX,SOA AORB: OR AX,SOB MOV KQ,AX MOV AH,9 LEA DX,TB6 INT 21H CALL INSO MOV AH,4CH INT 21H INSO PROC MOV CX, 16 MOV AH,2 HIEN_THI: XOR DX,DX SHL KQ,1 ADC DL,30H INT 21H LOOP HIEN_THI RET INSO ENDP PROC NHAPSO XOR DX,DX XOR BX,BX NHAP: MOV AH,1 INT 21H CMP AL,"0" JL NHAP CMP AL,"1" JG NHAP AND AL,0FH SHL DX, OR DL,AL INC BX CMP BX,16 JNE NHAP RET NHAPSO ENDP END MAIN 12 Viết chương trình nhập ký tự từ bàn phím, sau in hình mã ASCII ký tự nhận dạng thập lục phân, thập phân nhị phân Ví dụ: Nhập ký tự: A Mã ASCII dạng Hex: 41h Mã ASCII dạng Dec: 65 Mã ASCII dạng Bin: 01000001b MODEL SMALL MOV AL,KITU STACK 100 MOV AH,09H DATA LEA DX,TB1 chia: TB1 DB "VUI LONG INT 21H DIV sochia NHAP KI TU: $" PUSH DX TB2 DB 10,13,"Ma MOV AH,01H ASCII dang DEC: $" INT 21H INC CX TB3 DB 10,13,"Ma ASCII dang BIN: $" MOV KITU,AL XOR DX, DX TB4 DB 10,13,"Ma ASCII dang HEX: $" MOV AH,09H CMP AX, KITU DB LEA DX,TB2 sochia dw 10 INT 21H JNE chia HT_THAPPHAN: CODE MAIN PROC MOV AX,@DATA MOV DS,AX XOR DX, DX XOR CX,CX XOR AX,AX MOV AH, HT: pop DX ADD DL, 30H int 21h LOOP HT MOV AH,09H LEA DX,TB3 INT 21H MOV CX,8 XOR BX,BX MOV BH,KITU HT_NHIPHAN: LOOP HT_NHIPHAN MOV AH,9 LEA DX,TB4 INT 21H XOR BX,BX MOV BH,KITU MOV CX,2 JMP IN_CHU IN_SO: ADD DL,30H IN_CHU: MOV AH,2 INT 21H SHL BX,4 LOOP IN_HEX XOR DX,DX MOV AH, SHL BH, ADC DL, 30h ;ADD DL, 30H int 21h ;MOV [SI], DL ;INC SI IN_HEX: MOV DL,BH SHR DL,4 CMP DL,10 JB IN_SO ADD DL,37H mov ah, 4ch int 21h main endp end main 13 Viết lại chương trình 11 số A B nhập theo dạng thập lục phân Các kết in hình dạng nhị phân .MODEL SMALL LEA DX,TB1 INT 21H STACK 100 INT 21H DATA CALL INSO SOA DW CALL NHAPSO SOB DW MOV AX,SOA LUU DW MOV SOA,BX ASUBB: TB1 DB "NHAP SO SUB AX,SOB A: $" MOV AH,9 MOV KQ,AX TB2 DB 10,13,"NHAP LEA DX,TB2 SO B: $" INT 21H MOV AH,9 TB3 DB 10,13,"A+B= LEA DX,TB4 $" INT 21H TB4 DB 10,13,"A-B= CALL NHAPSO $" MOV SOB,BX CALL INSO TB5 DB 10,13,"A AND B= $" ; MOV AX,SOA TB6 DB 10,13,"A OR _ B= $" MOV AX,SOA AANDB: KQ DW AND AX,SOB CODE AADDB: MOV KQ,AX MAIN PROC ADD AX,SOB MOV AX,@DATA MOV KQ,AX MOV AH,9 MOV DS,AX LEA DX,TB5 MOV AH,9 INT 21H MOV AH,9 LEA DX,TB3 CALL INSO MOV AX,SOA AORB: OR AX,SOB MOV KQ,AX MOV AH,9 LEA DX,TB6 INT 21H CALL INSO MOV AH,4CH INT 21H MAIN ENDP INSO PROC MOV CX, 16 MOV AH,2 HIEN_THI: XOR DX,DX SHL KQ,1 ADC DL,30H INT 21H LOOP HIEN_THI RET INSO ENDP NHAPSO PROC MOV CX,4 XOR BX,BX NHAP: MOV AH,1 INT 21H CMP AL,"0" JL NHAP CMP AL,"9" JG CHU_CAI JMP SO CHU_CAI: CMP AL,"A" JL NHAP CMP AL,"F" JG NHAP SUB AL,7H SO: SUB AL,30H XOR AH,AH SHL BX,4 OR BL,AL LOOP NHAP RET NHAPSO ENDP 14 Viết lại chương trình 11 số A B nhập theo dạng thập phân In kết dạng thập phân: A + B, A – B .MODEL SMALL INT 21H MOV KQ,AX STACK 100 DATA CALL NHAPSO MOV AH,9 SOA DW LEA DX,TB3 SOB DW INT 21H CHIA10 DW 10 MOV AX,TONG TB1 DB "NHAP SO MOV SOA,AX CALL INSO A: $" TB2 DB 10,13,"NHAP MOV AH,9 MOV AX,SOA SO B: $" LEA DX,TB2 ASUBB: TB3 DB 10,13,"A+B= INT 21H SUB AX,SOB $" MOV KQ,AX TB4 DB 10,13,"A-B= $" CALL NHAPSO MOV AH,9 KQ DW LEA DX,TB4 TONG DW MOV AX,TONG INT 21H NHAN10 DW 10 MOV SOB,AX CODE CALL INSO MAIN PROC ; MOV AX,@DATA _ MOV AH,4CH MOV DS,AX MOV AX,SOA INT 21H MOV AH,9 LEA DX,TB1 AADDB: ADD AX,SOB MAIN ENDP INSO PROC XOR DX, DX XOR CX,CX MOV AX,KQ CHIA: DIV CHIA10 PUSH DX INC CX XOR DX, DX CMP AX,0 JNE CHIA MOV AH, HT: POP DX ADD DL,30H INT 21H LOOP HT RET INSO ENDP NHAPSO PROC MOV CX,4 MOV TONG,0 NHAP: MOV AH,1 INT 21H SUB AL,30H XOR BX,BX MOV BL,AL MOV AX,TONG MUL NHAN10 ADD AX,BX MOV TONG,AX LOOP NHAP RET NHAPSO ENDP 15 Viết chương trình tính giai thừa n! Với n số nguyên dương nhập từ bàn phím In kết hình dạng thập phân Cho biết, khả 8086 tính n lớn bao nhiêu? MODEL SMALL INT 21H MOV SO,AX STACK 100 DATA LOOP NHAP MOV CX,4 MOV CX,SO SO DW NHAP: NHAN10 DW 10 MOV AH,1 TB DB "NHAP SO: $" INT 21H TINH DW CODE MOV AX,1 GT: MUL CX AND AL,0FH LOOP GT MAIN PROC MOV AX,@DATA XOR BX,BX MOV TINH,AX MOV BL,AL MOV DS,AX MOV AX,SO MOV AH,9 MUL NHAN10 LEA DX,TB ADD AX,BX MOV AH,4CH INT 21H MAIN ENDP END MAIN 16 Viết chương trình tính ước số chung lớn số a b! Với a, b số nguyên dương nhập từ bàn phím In kết hình dạng thập phân ;CHUA KIEM TRA GIA SU A>B; CHUA KIEM TRA NHAP VAO LA SO MODEL SMALL MOV AH,9 ;287/91 du 14 STACK 100 LEA DX,TB1 ;91/14 du DATA INT 21H ;14/7 du SOA DW SOB DW ;->>> UCLN=7 CALL NHAPSO TB1 DB "NHAP SO A: $" TB2 DB 10,13,"NHAP SO B: $" TB3 DB 10,13,"USCLN CUA HAI SO: $" XOR BX,BX XOR AX,AX MOV AX,TONG MOV AX,SOA MOV SOA,AX MOV BX,SOB MOV BIEN,BX MOV AH,9 BIEN DW LEA DX,TB2 UCLN: NHAN10 DW 10 INT 21H CHIA10 DW 10 XOR DX,DX TONG DW DIV BIEN UOC_CHUNG DW CALL NHAPSO MOV AX,BIEN CODE XOR BX,BX MAIN PROC MOV AX,TONG MOV BX,BIEN MOV SOB,AX MOV BIEN,DX MOV AX,@DATA CMP DX,0 MOV DS,AX JNE UCLN MOV UOC_CHUNG,BX MOV AH,9 LEA DX,TB3 INT 21H CALL INSO MOV AH,4CH INT 21H MAIN ENDP NHAPSO PROC MOV AX,UOC_CHUNG XOR CX,CX CHIA: MOV CX,4 DIV CHIA10 MOV TONG,0 PUSH DX NHAP: INC CX MOV AH,1 XOR DX,DX INT 21H CMP AX,0 SUB AL,30H JNE CHIA XOR BX,BX MOV AH,2 MOV BL,AL HT: MOV AX,TONG POP DX MUL NHAN10 ADD DL,30H ADD AX,BX INT 21H MOV TONG,AX LOOP HT LOOP NHAP RET RET INSO ENDP NHAPSO ENDP END MAIN INSO PROC XOR DX, DX XOR CX,CX XOR AX,AX 17 Viết chương trình nhập chuỗi ký tự In chuổi dã nhập theo thứ tự ngược Chương trình có dạng Nhập ký tự: abcdef Chuổi ngược: fedcba MODEL SMALL STACK 100 MAIN PROC DOC: DATA XUONG_DONG DB MOV AX,@DATA MOV AH,1 10,13,"$" MOV DS,AX INT 21H CMP AL,0DH CODE XOR CX,CX JE HIEN_THI PUSH AX INC CX JMP DOC HIEN_THI: MOV AH,9 LEA DX,XUONG_DONG INT 21H MOV AH,2 EXIT: LAP: POP DX INT 21H LOOP LAP 18 Nhập vào dãy số, tính trung bình cộng dãy số Nhập vào dãy số: Trung bình cộng: (1+3+5+6+8)/5 = MODEL SMALL MOV AH,9 STACK 100 LEA DX,TB DATA INT 21H TB DB "NHAP VAO DAY SO: $" DEM DW TB_CONG DW CODE MAIN PROC MOV AX,@DATA MOV DS,AX MOV AH,4CH INT 21H MAIN ENDP END MAIN XOR BX,BX NHAP: MOV AH,1 INT 21H CMP AL,0DH JE TRUNG_BINH INC DEM SUB AL,30H XOR AH,AH ADD BX,AX JMP NHAP 19 Nhập vào số, tính tổng chữ số số Nhập vào số: 1234 Tổng chữ số: 10 ;bai 19 nhap vao so tinh tong cac chu so MODEL SMALL STACK 100 MOV AH,9 DATA LEA DX,TB TONG DW INT 21H NHAN10 DW 10 CHIA10 DW 10 MOV CX,4 TONGCHUSO DW TB DB "NHAP VAO NHAP: DAY SO: $" ; 1234/10=123 DU MOV AH,1 ;123/10=12 DU INT 21H ;12/10=1 DU SUB AL,30H ; 1/10=0 DU XOR BX,BX MOV BL,AL MOV AX,TONG CODE MUL NHAN10 MAIN PROC ADD AX,BX MOV AX,@DATA MOV TONG,AX MOV DS,AX LOOP NHAP TRUNG_BINH: MOV AX,BX DIV DEM MOV TB_CONG,AX MOV AH,4CH INT 21H MAIN ENDP END MAIN XOR BX,BX MOV AX,TONG TINH_TONG: XOR DX,DX DIV CHIA10 ADD BX,DX CMP AX,0 JNE TINH_TONG MOV TONGCHUSO,BX EXIT: MOV AH,4CH INT 21H MAIN ENDP END MAIN 20 Nhập vào n, kiểm tra n có phải số hoàn hảo Số hoàn hảo số có tổng ước số tự nhiên không kể nó Ví dụ: = + + => số hoàn hảo MODEL SMALL STACK 100 DATA NHAN10 DW 10 CHECK DW TONG DW CHIA DW TONG_UOC DW TB1 DB "VUI LONG NHAP SO: $" TB2 DB 10,13,"DAY LA SO HOAN HAO $" TB3 DB 10,13,"DAY KHONG PHAI LA SO HOAN HAO $" CODE MAIN PROC KHOI_TAO: MOV AX,@DATA MOV DS,AX MOV AH,9 LEA DX,TB1 INT 21H MOV CX,4 NHAP: MOV AH,1 INT 21H SUB AL,30H XOR BX,BX MOV BL,AL MOV AX,TONG MUL NHAN10 ADD AX,BX MOV TONG,AX LOOP NHAP ; _ XOR AX,AX XOR BX,BX KIEM_TRA: XOR DX,DX MOV AX,TONG INC CHIA DIV CHIA CMP DX,0 JNE KO_CHIA_HET MOV BX,TONG_UOC 21 Tìm ước chung lớn nhấ lưu vào tệp bùi trung THONGBAO MACRO S TB3 DB 10,13,'DA GHI LEA DX,S VAO TEP $' MOV AH,09H TENTEP DB INT 21H 'UOC_CHUNG_LON_N ENDM HAT.TXT',0 MODEL SMALL CONTROL DW ? STACK 100 BIEN DW ? DATA SO10 DW 10 TB1 DB 10,13,'NHAP SOLUU DW SO A: $' SOLUUA DW TB2 DB 10,13,'NHAP SOLUUB DW SO B: $' UOCCHUNG DW ADD BX,CHIA MOV TONG_UOC,BX KO_CHIA_HET: XOR BX,BX MOV BX,CHIA CMP BX,TONG JNE KIEM_TRA ; _ XOR AX,AX MOV AX,TONG_UOC SUB AX,CHIA HT: CMP AX,TONG JNE KO_PHAI MOV AH,9 LEA DX,TB2 INT 21H JMP EXIT KO_PHAI: MOV AH,9 LEA DX,TB3 INT 21H EXIT: MOV AH,4CH INT 21H MAIN ENDP END MAIN X DW CODE MAIN PROC MOV AX,@DATA MOV DS,AX LEA DX,TENTEP MOV CX,0 MOV AH,3CH INT 21H MOV CONTROL,AX THONGBAO TB1 CALL NHAPSO MOV AX,SOLUU MOV SOLUUA,AX MOV SOLUU,0 THONGBAO TB2 CALL NHAPSO MOV AX,SOLUU MOV SOLUUB,AX MOV SOLUU,0 MOV AX,SOLUUA UOC: CMP AX,SOLUUB JE TIEP JL A[...]... DX MUL NHAN10 ADD DL,30H ADD AX,BX INT 21H MOV TONG,AX LOOP HT LOOP NHAP RET RET INSO ENDP NHAPSO ENDP END MAIN INSO PROC XOR DX, DX XOR CX,CX XOR AX,AX 17 Viết chương trình nhập 1 chuỗi ký tự In chuổi dã nhập theo thứ tự ngược Chương trình có dạng Nhập ký tự: abcdef Chuổi ngược: fedcba MODEL SMALL STACK 100 MAIN PROC DOC: DATA XUONG_DONG DB MOV AX,@DATA MOV AH,1 10,13,"$" MOV DS,AX INT 21H CMP AL,0DH ... END MAIN INSO PROC XOR DX, DX XOR CX,CX XOR AX,AX 17 Viết chương trình nhập chuỗi ký tự In chuổi dã nhập theo thứ tự ngược Chương trình có dạng Nhập ký tự: abcdef Chuổi ngược: fedcba MODEL SMALL... MOV AH,4CH NHAP: LOOP HIEN_THI INT 21H MOV AH,1 MAIN ENDP INT 21H MOV AH,9 END MAIN Viết chương trình cho phép nhập vào chuỗi Sau đó: - Đổi tất ký tự thường thành ký tự hoa in hình - Đổi tất ký... CX RET MOV AX,SOTG DIV BX HIENTHI ENDP MOV SOTG,0 PUSH DX END MAIN RET CMP AX,0 11 Viết chương trình nhập số nhị phân 16 bit A B Sau in hình kết dạng nhị phân: A + B, A – B, A and B, A or B Ví