You are on page 1of 9

MT S CHC NNG CA NGT 21H Phn ny trnh by cc hm thng dng ca ngt 21h.

l cc hm thao tc vo/ra i vi k t, chui k t, file,th mc, kt thc chngtrnh v tr li quyn iu khin cho H iu hnh DOS. Hm 01: c 1 k t (chin) t bnphm Input: AH=01 Output: AL= m ASCII ca k t AL=0 nu g vo phm chc nng. Hm 02: hin 1 k t ln mn hnh Input: AH=02DL= m ASCII ca k t cn hin th Output: Hm 08: c 1 k t (khng hin) t bn phm Input: AH=08 Output: AL= m ASCII ca k t AL=0 nu g vo phm chc nng. Hm 09: hin xu k t kt thc bi $ ln mn hnh Input: AH = 09 DX = a ch offset ca xu k t Hm 0Ah: c xu k t t bn phm Input: AH = 0Ah DX = a ch offset ca vng m cha xu k t Output: DX = a ch offset ca xu k t Hm 4Ch: kt thc chng trnh Input: AH = 4Ch Output: Kt thc chng trnh, tr li quyn iu khin cho h iu hnh

1a// CT Hop ngu xuat ky tu A viet o dang nhung trong C // Nguoi viet: Thai Hung Van // ------------------------void main() { asm mov AH, 2 asm mov DL, 'A' asm int 21h } 1b // CT Hop ngu xuat ky tu A viet o dang nhung trong C void main() { asm{ mov AH, 2 mov DL, 'A' int 21h } } 2. // CT Hop ngu xuat chuoi "ABC" viet o dang nhung trong C co su dung bien // Nguoi viet: Thai Hung Van // ------------------------void main() { asm mov AH, 2 asm mov DL, 'A' asm int 21h asm add DL, 1 //DL la A, cong them 1 se la B // asm mov AH, 2 ; vi AH van con mang gia tri 2 nen lenh nay co the ko can asm int 21h // xuat ky tu B char Kytu = 'C'; asm{ mov AH, 2 mov DL, Kytu int 21h // xuat ky tu C } } 3a.// CT Hop ngu nhap 1 ky tu & xuat ra ky tu ke sau - viet o dang nhung trong C

void main() { asm{ mov AH, 1 int 21h

// nhap ky tu vao thanh ghi AH nhung chua co xuat

mov AH, 2 //goi ham con xuat ky tu mov DL, AL //cong thanh ghi DL voi thanh ghi AL de duoc ky tu vua nhap phia tren add DL, 1 // DL = ma ky tu ke sau int 21h } } 3b. // CT nhap 1 ky tu, xuong dong & xuat ra ky tu ke sau void main() { char Kytu; asm{ mov AH, 1 int 21h // nhap ky tu vao thanh ghi AL mov Kytu, AL // luu ma ky tu vao bien Kytu mov AH, 2 mov DL, 10 int 21h // xuat ma 10d de xuong dong , m 10 l new line trong m accsii mov DL, Kytu add DL, 1 // DL = ma ky tu ke sau int 21h } } 4. // CT nhap 1 ky tu, kiem tra va xuat ra thong bao do co phai la ky tu so hay khong // Nguoi viet: Thai Hung Van // ------------------------#include <stdio.h> void main() { char Kytu; asm{ mov AH, 1 int 21h // nhap ky tu vao thanh ghi AL mov Kytu, AL // luu ma ky tu vao bien Kytu cmp Kytu, '0' // so snh vi so 0 nu s nhp (khi chuyn m ascii thnh h 10 m nh hn 0 (tc 48)=>k t jb KhongPhai // jb l lnh nhy c iu kin b:below di. do trong m ascii th 0-9 l t 48d-57d cmp Kytu, '9' // nu s nhp ln hn 9 (tc l 57) th l k t ja KhongPhai // ja l lnh nhy c iu kin a:above trn. do trong m ascii th 0-9 l t 48d-57d } printf(" Ky tu nay la ky tu So" ); asm jmp KetThuc KhongPhai: printf(" Ky tu nay khong phai la ky tu So" ); KetThuc: } 5a./ CT nhap 2 so nguyen 1 chu so, tinh tong & xuat ket qua # version 1 // Nguoi viet: Thai Hung Van // ------------------------void main() { asm{ mov AH, 1 int 21h // AL = ky tu I mov DL, AL // DL = ky tu I

sub DL, '0' int 21h sub AL, '0' add DL,AL cmp DL, 10 jae Thoat

// DL = so I gia su nhap so 1, m ascii l49 th tra ve so 1 phai tr i 0 (tc 48) c s 1 // AL = ky tu II (luc nay AH van con bang 2) // AL = so II gia su nhap so 2, m ascii l50 th tra ve so 2 phai tr i 0 (tc 48) c s 2 // DL = tong 2 so 1+2 =3

// tong la so 2 chu so - chua xu ly

add DL, '0' // DL = ky tu ket qua cng 2 s ra s 3, cho nn phi i sang ascii phi + thm 48 ra 51, my hiu mov AH, 2 int 21h } Thoat: // version nay chi xuat ra ket qua khi tong < 10 (la so 1 chu so) } 5b.// CT nhap 2 so nguyen 1 chu so, tinh tong & xuat ket qua # version 2 // Nguoi viet: Thai Hung Van // ------------------------void main() { char a; asm{ mov AH, 1 int 21h sub AL, '0' mov a, AL

// AL = ky tu I // AL = so I // a = so I

mov DL, '+' mov AH, 2 int 21h // xuat ky tu '+' mov AH, 1 int 21h sub AL, '0' add a, AL

// AL = ky tu II // AL = so II // a = tong 2 so

mov DL, '=' mov AH, 2 int 21h // xuat ky tu '=' cmp a, 10 jae XuatSo2ChuSo mov DL, a add DL, '0' // DL = ky tu ket qua mov AH, 2 int 21h jmp Xong } XuatSo2ChuSo: asm { mov AH,2 mov DL,'1' // Khi nay (Tong > 9) va (Tong < 19) nen chu so dau se la 1. int 21h mov DL, a add DL, '0'-10 // Chu so hang don vi la (a-10), va phai cong '0' de ra ky tu so tuong ung int 21h }

Xong: asm mov ah,0 asm int 16h } 5c. // CT nhap 2 so nguyen 1 chu so, tinh tong & xuat ket qua # version 3 // Nguoi viet: Thai Hung Van // ------------------------void main() { char a; NhapSoI: asm{ mov AH, 8 int 21h cmp AL, '0' jb NhapSoI cmp AL, '9' ja NhapSoI mov AH, 2 mov DL, AL int 21h sub AL, '0' mov a, AL mov DL, '+' mov AH, 2 int 21h } NhapSoII: asm{ mov AH, 8 int 21h cmp AL, '0' jb NhapSoII cmp AL, '9' ja NhapSoII mov AH, 2 mov DL, AL int 21h sub AL, '0' add a, AL mov DL, '=' mov AH, 2 int 21h cmp a, 10 jb XuatSo1ChuSo mov DL,'1' int 21h sub a,10 } XuatSo1ChuSo: asm { mov DL, a add DL, '0' int 21h

// nhap ky tu - khong hien // AL = ky tu I // kiem tra co phai la ky tu so

// hien ky tu so vua nhap

// AL = so I // a = so I

// nhap ky tu - khong hien // AL = ky tu II // kiem tra co phai la ky tu so

// hien ky tu so vua nhap // AL = ky tu II // AL = so II // a = tong 2 so

} Xong: asm mov ah,0 asm int 16h } 5d. // CT nhap 2 so nguyen 1 chu so, tinh tong & xuat ket qua # version 3 // Nguoi viet: Thai Hung Van // -------------------------void XuatKyTu (void) { // ham xuat ky tu trong thanh ghi AL asm mov DL, AL asm mov AH, 2 asm int 21h } // -------------------------void NhapSo(void) { // ham nhap so 1 chu so vao thanh ghi AL Nhap: // vong lap se nhap vao cac ky tu cho den khi nhap duoc ky tu so asm mov AH, 8// ham 08 ngat 21h nhap ky tu vao AL asm int 21h // va ky tu vua nhap khong hien len man hinh asm cmp AL, '0' // kiem tra co phai la ky tu so asm jb Nhap asm cmp AL, '9' asm ja Nhap XuatKyTu(); // hien thi ky tu so vua nhap asm sub AL, '0' // AL = so nhap duoc } // -------------------------void main() { char a; NhapSo(); // AL = so I asm mov a, AL // a = so I asm mov AL,'+' XuatKyTu(); NhapSo(); // AL = so II asm add a, AL // a = tong 2 so asm mov AL,'=' XuatKyTu(); asm cmp a, 10 asm jb XuatSo1ChuSo asm mov AL,'1' XuatKyTu(); asm sub a,10 XuatSo1ChuSo: asm mov AL, a asm add AL, '0' XuatKyTu(); } 6a. // CT nhap 2 so nguyen 1 chu so, tinh Hieu & xuat ket qua # version 1 // Nguoi viet: Thai Hung Van // ------------------------main() { char a,b; asm{ mov AH, 1 int 21h // AL = ky tu I sub AL, '0' mov a, AL // a = so I int 21h // goi ham con 02 de nhap ky tu thu II vao AL

sub AL, '0' mov b, AL // b = so II mov DL, a cmp DL, b // so sanh a va b jae KetQuaKhongAm mov DL, '-' mov AH, 2 int 21h mov DL, b sub DL, a // DL = soII - soI add DL, '0' int 21h jmp Xong } KetQuaKhongAm: asm { sub DL, b // DL = soI - soII add DL, '0' mov AH, 2 int 21h } Xong: } 7a. // CT nhap 2 so nguyen 1 chu so, tinh Tich & xuat ket qua # version 1 // Nguoi viet: Thai Hung Van // ------------------------void main() { char tich; asm{ mov AX,3 int 10h // xoa man hinh mov AH, 1 int 21h mov DL, AL sub DL, '0' mov tich, 0 int 21h sub AL, '0'

// AL = ky tu I // DL = ky tu I // DL = so I // AL = ky tu II // AL = so II

} Lap: // tinh tich bang cach cong nhieu lan asm{ add tich, DL sub AL, 1 cmp AL, 0 jne Lap mov DL, tich mov AH, 2 cmp DL, 10 jnb SSvoi20 add DL, '0' int 21h jmp Xong } SSvoi20: // DL=tich = soI * soII

// DL = ky tu ket qua

asm { cmp DL, 20 jnb SSvoi30 mov BL, DL mov DL, '1' int 21h mov DL, BL add DL,'0'-10 // DL = ky tu ket qua int 21h jmp Xong } SSvoi30: asm{ cmp DL, 30 jnb SSvoi40 mov BL, DL mov DL, '2' int 21h mov DL, BL add DL,'0'-20 // DL = ky tu ket qua int 21h jmp Xong } SSvoi40: asm { cmp DL, 40 jnb SSvoi50 mov BL, DL mov DL, '3' int 21h mov DL, BL add DL,'0'-30 // DL = ky tu ket qua int 21h jmp Xong } SSvoi50: asm { cmp DL, 50 jnb SSvoi60 mov BL, DL mov DL, '4' int 21h mov DL, BL add DL, '0'-40 // DL = ky tu ket qua int 21h jmp Xong } SSvoi60: asm { cmp DL, 60 jnb SSvoi70 mov BL, DL mov DL, '5' int 21h mov DL, BL add DL, '0'-50 // DL = ky tu ket qua int 21h jmp Xong } SSvoi70:

asm { cmp DL, 70 jnb SSvoi80 mov BL, DL mov DL, '6' int 21h mov DL, BL add DL, '0'-60 // DL = ky tu ket qua int 21h jmp Xong } SSvoi80: asm { cmp DL, 80 jnb Hon80 mov BL, DL mov DL, '7' int 21h mov DL, BL add DL, '0'-70 // DL = ky tu ket qua int 21h jmp Xong } Hon80: asm { mov DL, '8' int 21h mov DL, BL add DL, '0'-80 // DL = ky tu ket qua int 21h } Xong: } 7b. // CT nhap 2 so nguyen 1 chu so, tinh Tich & xuat ket qua # version 2 // Nguoi viet: Thai Hung Van // ------------------------void main() { asm{ mov AH, 1 int 21h // AL = ky tu I mov DL, AL// DL = ky tu I sub DL, '0' // DL = so I mov BL, DL int 21h // AL = ky tu II sub AL, '0' // AL = so II } Nhan: asm{ add DL, BL sub AL, 1 cmp AL, 1 jne Nhan // DL = tich 2 so mov BL, 0 } Chia10: asm { cmp DL, 10 jb ChiaXong

sub DL, 10 add BL, 1 jmp Chia10 } ChiaXong: // BL=thuong (chu so hang chuc) & DL=du (chu so dvi) asm { mov CL, DL mov AH, 2 mov DL, BL add DL, '0' int 21h mov DL, CL add DL, '0' int 21h } } 7c. // CT nhap 2 so nguyen 1 chu so, tinh Tich & xuat ket qua # version 3 // Nguoi viet: Thai Hung Van // ------------------------void main() { asm{ mov AH, 1 int 21h // AL = ky tu I mov DL, AL // DL = ky tu I sub DL, '0' // DL = so I (*) int 21h // AL = ky tu II sub AL, '0' // AL = so II (**) mov BL, 0 } Nhan: asm{ cmp AL, 0 je NhanXong add BL, DL sub AL, 1 jmp Nhan } NhanXong: // BL = tich 2 so asm mov DL, '0' Chia10: asm { cmp BL, 10 jb ChiaXong sub BL, 10 add DL, 1 jmp Chia10 } ChiaXong: asm { mov AH, 2 int 21h mov DL, BL add DL, '0' int 21h } }

// DL=ky tu tuong ung chu so hang chuc & BL=du (chu so dvi)

// xuat chu so hang chuc

// xuat chu so hang don vi

You might also like