Một số dạng bài tập ngôn ngữ lập trình Assembly
[...]... ; ax = ui add si,ax ; si = (t ng các thành ph n t u1 n ui-1) + ui loop L1 mov ax,si ; ax = t ng c p s nhân pop BP ; H i ph c giá tr BP ret @CSN$qiii ENDP END CÁC BÀI T P L P TRÌNH H TH NG Bài 1 Hãy vi t chương trình cho bi t máy tính b n ang dùng có m m nào hay không? N u có thì bao nhiêu ? Cách gi i : Chú ý byte c a có a ch 0:410h c a vùng d li u ROM BIOS có ch a các thông tin liên quan n thông tin... @AVERAGE$qiini ENDP END Bài 4 ; ; Tính t ng m t dãy s nguyên | ; Phân công nhi m v : − Ngôn ng C++ : • Nh n s lư ng thành ph n n, • Nh n các s c a dãy s ưa vào m t m ng, • G i chương trình con tính t ng các thành ph n c a m ng do Assembly vi t, • Hi n k t qu lên màn hình − Ngôn ng Assembly : Chương trình con tính t ng các thành ph n c a m ng Cách 1: Hàm Assembly không... mov ax,es:[bx] ; ax = a ch COM call HIEN_HEXA ; Hi n a ch d ng HEXA lên màn hình HienString space ; Hiên m t s d u cách add bx,2 ; bx tr n các byte ch a a ch c ng COM ti p theo loop L2 Exit: mov ah,4ch ; V DOS int 21h INCLUDE lib3 .asm ; lib3 .asm ch a chương trình con HIEN_HEXA END PS lib3 .asm ; ; Chương trình con hi n n i dung có trong | ; thanh ghi AX lên màn hình d ng HEXA |... năng hi n 1 ký t ASCII lên màn hình int 10h Exit: mov ah,4ch ; V DOS int 21h END PS Bài 2 Hãy vi t chương trình cho bi t máy tính b n ang dùng có c ng COM nào hay không? N u có thì bao nhiêu c ng và cho bi t a ch các c ng ó ( a ch c ng ph i là HEXA) Cách gi i : Chú ý byte c a có a ch 0:411h c a vùng d li u ROM BIOS có ch a các thông tin liên quan n thông tin v s lư ng c ng COM mà máy tính ang dùng có,... không ph i thì nh y n nhãn Exit (v DOS) jmp PS ; Còn không thì quay v u (b t u l i chương trình) Exit: mov ah,4ch ; V DOS int 21h INCLUDE lib2 .asm END PS Bài 8 ; - ; Tính bi u th c | ; Khi chương trình ch y yêu c u có dang : INCLUDE lib1 .asm MODEL small STACK 100h DATA M1 db 10,13,'Hay vao N : $' M2 db 10,13,'Tong tu 1 den $' M3 db 10,13,' la : $ ' M4 db 10,13,'Co tiep tuc (c/k)... int 21h INCLUDE lib2 .asm END PS LIÊN K T NGÔN NG B C CAO V I ASSEMBLY Bài 1 ; -; a lũy th a n (v i a là s nguyên và n là s nguyên dương) | ; -Phân công nhi m v : − Ngôn ng C++ : • Nh n a và n, • G i chương trình con tính an do Assembly vi t, • Hi n k t qu lên màn hình − Ngôn ng Assembly : Chương trình con tính an Cách 1: Hàm Assembly... thì quay v u (b t u l i chương trình) Exit: mov ah,4ch ; V DOS int 21h INCLUDE lib2 .asm END PS Bài 7 ; ; T ng c p s nhân khi bi t n (s lư ng thành ph n) | ; q (công b i) và u1 (giá tr thành ph n u tiên) | ; Khi chương trình ch y yêu c u có dang : INCLUDE lib1 .asm MODEL small STACK 100h DATA M1 db 10,13,'Hay vao n : $' M2 db 10,13,'Hay vao q... c chia HX2: ; Còn thương b ng 0 thì thi t l p vòng l p lôi các sô (d ng ASCII pop ax ; vào AL hi n) mov ah,0eh ; Ch c năng hi n 1 ký t ASCII n m AL lên màn hình int 10h loop HX2 pop dx cx bx ax ret HIEN_HEXA ENDP Bài 3 Hãy vi t chương trình cho bi t máy tính b n ang dùng có c ng LPT nào hay không? N u có thì bao nhiêu c ng và cho bi t a ch các c ng ó ( a ch c ng ph i là HEXA) ... PUBLIC @CSC$qv @CSC$qv PROC mov cx,_n ; cx = n mov bx,_d ; bx = d mov ax,_u1 ; ax = u1 mov dx,ax ; dx = u1 dec cx ; cx = n-1 L1: add dx,bx ; dx = ui add ax,dx ; ax = (t ng các thành ph n t u1 n ui-1) + ui loop L1 ret @CSC$qv ENDP END Cách 2: Hàm Assembly có 1 i (n là tham s th c - c t vào stack, còn d,u1 v n là bi n toàn c c) T p C++: #include #include int d,u1; extern int CSC(int... cx = n (l y giá tr n t stack) mov bx,_d ; bx = d mov ax,_u1 ; ax = u1 mov dx,ax ; dx = u1 dec cx ; cx = n-1 L1: add dx,bx ; dx = ui add ax,dx ; ax = (t ng các thành ph n t u1 n ui-1) + ui loop L1 pop BP ; H i ph c giá tr c a BP ret @CSC$qi ENDP END Cách 3: Hàm Assembly có 2 i (n, d là tham s th c - c t vào satck, còn u1 v n là bi n toàn c c) T p C++: #include #include int u1; extern . INCLUDE lib2 .asm END PS Bài 2 ; ; n! (n từ 0 đến 7) | ; Khi chương trình chạy yêu cầu có dang : Hay vao n : 6 Giai thua cua 6 la : 720 Co tiep tuc CT (c/k)?_ INCLUDE lib1 .asm .MODEL. lib2 .asm END PS Bài 6 ; ; Tổng cấp số cộng khi biết n (số lượng thành phần) | ; d (công sai) và u1 (giá trị thành phần đầu tiên) | ; Khi chương trình chạy yêu cầu có dang : INCLUDE lib1 .asm. lib2 .asm END PS Bài 7 ; ; Tổng cấp số nhân khi biết n (số lượng thành phần) | ; q (công bội) và u1 (giá trị thành phần đầu tiên) | ; Khi chương trình chạy yêu cầu có dang : INCLUDE lib1.asm