| Tác giả | Thông điệp |
---|
nghthien Tri Phủ
Tổng số bài gửi : 61 Experience : 86 Danh Vọng : 4
| Tiêu đề: Bài tập hợp ngữ tuần 5 Tue Jan 25, 2011 4:23 pm | |
| Bài tập tuần 5 chuyên về các lệnh nhảy và lặp trong hợp ngữ. Trong đây không có bài 3 đâu nha, vì bài 3 em đã post ở topic "Bài tập hợp ngữ tuần 4" của anh phoenix51706 rồi. Bài 6.Dùng lệnh lặp, viết chương trình nhập vào 1 chuỗi ký tự. Sau khi nhập xong đếm xem chuỗi có bao nhiêu ký tự. Xuất số ký tự có trong chuỗi. Ví dụ: S = "Hello world !" ==> Số kí tự trong chuỗi là 13. - Code:
-
.model small .stack .data mess1 db 'Nhap vao chuoi ky tu s: $' mess2 db 13,10, 'So ky tu trong la: $' messkt db 13,10, 'Nhan 1 phim de ket thuc ...$' .code ;xoa man hinh mov ax,3 int 10h mov dx,seg mess1 mov ds,dx ;thong bao nhap mov ah,9 lea dx,mess1 int 21h mov bl,0 Nhap: mov ah,1 int 21h cmp al,13 ;so sanh voi phim enter je thoat cmp bh,255 ;so sanh neu nhap den 255 ky tu thi thoat je thoat inc bl jmp Nhap thoat: ;thong bao so ky tu mov ah,9 lea dx,mess2 int 21h mov al,bl mov bl,10 mov cx,0 chia: mov ah,0 ;xoa bit cao div bl ;chia al cho bl thuong dat al, so du dat ah mov dh,0 ;xoa bit cao mov dl,ah push dx inc cx ;tang cx de thuc hien vong lap in cmp al,0 ;so sanh neu al=0 thi phep chia da hoan tat je th jmp chia th: ;in so ky tu mov ah,2 pop dx add dl,30h int 21h loop th kt: mov ah,9 lea dx,messkt int 21h mov ah,1 int 21h mov ah,4ch int 21h end
Bài 7.Nhập 2 số nguyên dương thuộc N,M thuộc [0..9], nhập 1 ký tự Char. Xuất ra màn hình ma trận gồm N dòng và M cột gồm ký tự Char. Ví dụ: N=3, M=4, C='*' ⇒ * * * * * * * * * * * * - Code:
-
.model small .stack .data mess1 db 13,10, 'Nhap so dong N: $' mess2 db 13,10, 'Nhap so cot M : $' mess3 db 13,10, 'In *: ' ,13,10, '$' messkt db 'Nhan 1 phim de ket thuc ...$' n db 0 .code mov ax,3 int 10h mov dx,seg mess1 mov ds,dx ;thong bao nhap N Nhap: mov ah,9 lea dx,mess1 int 21h mov ah,1 int 21h cmp al,'0' jb Nhap cmp al,'9' ja Nhap sub al,30h mov bl,al ;thong bao nhap N NhapM: mov ah,9 lea dx,mess2 int 21h mov ah,1 int 21h cmp al,'0' jb NhapM cmp al,'9' ja NhapM sub al,30h mov bh,al ;in thong bao in * mov ah,9 lea dx,mess3 int 21h mov ah,2 mov ch,0 ;xoa bit cao mov cl,bl cmp cl,0 ;kiem tra neu n=0 thi in 1 dong dau tien ja inf1 mov cl,1 inf1: push cx mov ch,0 ;xoa bit cao mov cl,bh mov dl,'*' ;gan dl=* cmp cl,0 ;kiem tra neu m=0 thi chi in cot ja inf2 mov cl,1 inf2: int 21h loop inf2 mov dl,13 ;xuong dong int 21h mov dl,10 ;xuong dong int 21h pop cx loop inf1 kt: mov ah,9 lea dx,messkt int 21h mov ah,1 int 21h mov ah,4ch int 21h end
Bài 8.Viết chương trình cho phép nhập vào một chuỗi S. Đổi tất cả ký tự thường thành ký tự hoa. Đổi tất cả ký tự hoa thành ký tự thường. - Code:
-
.model small .stack .data mess1 db 13,10, 'Nhap vao chuoi ky tu s(a-z,A-Z): $' mess2 db 13,10, 'Cac ky tu duoc dat ra la: $' messloi db 13,10, 'Nhap sai!',13,10, '$' messkt db 13,10, 'Nhan 1 phim de ket thuc ...$' a db ? .code ;xoa man hinh mov ax,3 int 10h mov dx,seg mess1 mov ds,dx jmp N ;thong bao nhap sai Nhapsai: mov ah,9 lea dx,messloi int 21h N: ;thong bao nhap mov ah,9 lea dx,mess1 int 21h mov cx,0 mov si,0 Nhap: mov ah,1 int 21h cmp al,13 ;so sanh voi phim enter je thoat cmp cx,255 ;so sanh neu nhap den 255 ky tu thi thoat je thoat cmp al,'A' ;neu nho hon 'A' thi chuyen ve Nhapsai jb Nhapsai cmp al,'Z' ;neu <= 'Z' thi chuyen ve Nhapsai jna M cmp al,'a' ;neu nho hon 'a' thi chuyen ve Nhapsai jb Nhapsai cmp al,'z' ;neu lon hon 'z' thi chuyen ve Nhapsai ja Nhapsai M: inc cx mov a[si],al inc si jmp Nhap thoat: ;thong bao so ky tu mov ah,9 lea dx,mess2 int 21h ;xu ly mang da nhap mov si,0 xuly: cmp a[si],'Z' ja doikythuong add a[si],20h ;neu la ky tu hoa thi +20h se thanh ky tu thuong jmp ktv doikythuong: sub a[si],20h ;neu la ky tu thuong thi -20h se thanh ky tu hoa ktv: inc si loop xuly mov cx,si mov si,0 mov ah,2 inmang: mov dl,a[si] int 21h inc si loop inmang kt: mov ah,9 lea dx,messkt int 21h mov ah,1 int 21h mov ah,4ch int 21h end
Bài 9.Nhập và xuất mảng 1 chiều. Tìm phần tử max, min, tính tổng các phần tử trong mảng. Ví dụ: N = 5 A[N] = {3,1,2,7,4} => max = 7, min = 1, tổng = 17. - Code:
-
.model small .stack .data mess1 db 13,10, 'Nhap so phan tu cua mang(1-9): $' mess2 db 13,10, 'Nhap a[$' mess2_1 db ']=$' mess3 db 13,10, 'Max = $' mess4 db 13,10, 'Min = $' mess5 db 13,10, 'Tong= $' messkt db 13,10, 'Nhan 1 phim de ket thuc ...$' A db ? .code mov ax,3 int 10h mov dx,seg mess1 mov ds,dx ;thong bao nhap so phan tu Nhap: mov ah,9 lea dx,mess1 int 21h mov ah,1 int 21h cmp al,'1' jb Nhap cmp al,'9' ja Nhap sub al,30h mov bl,al ;gan bl=al so phan tu da nhap mov si,0 mov ch,0 mov cl,bl ;gan cl=bl de xu ly trong vong lap Nhapmang: Nhappt: ;thong thong bao mov ah,9 lea dx,mess2 int 21h mov ah,2 mov dh,0 ;xoa bit cao mov dx,si add dl,30h int 21h mov ah,9 lea dx,mess2_1 int 21h mov ah,1 ;nhap gia tri cho mang int 21h cmp al,'0' jb Nhappt cmp al,'9' ja Nhappt sub al,30h mov a[si],al ;gan gia tri vua nhap vao mang inc si loop Nhapmang mov ah,0 ;xoa bit cao mov al,0 ;gan al=0 de cong tong mov dh,a[0] mov dl,a[0] mov bh,10 mov cl,bl mov si,0 xulymang: ;mul bh add al,a[si] cmp dh,a[si] ;jbe min ;jbe tuong duong <= jna min ;jna tuong duong <= mov dh,a[si] min: cmp dl,a[si] ;jae max ;jae tuong duong >= jnb max ;jnb tuong duong >= mov dl,a[si] max: inc si ;tang si vi tri trong mang loop xulymang mov bl,al ;gan lay gia tri tong mov cl,dl ;gan lay gia tri max mov ch,dh ;gan lay gia tri min ;neu khong gan xuong len lea dx,mess3 gia tri se thay doi ;in max mov ah,9 lea dx,mess3 int 21h mov dl,cl add dl,30h mov ah,2 int 21h ;in min mov ah,9 lea dx,mess4 int 21h
mov dl,ch add dl,30h mov ah,2 int 21h ;in tong mov ah,9 lea dx,mess5 int 21h mov ah,0 ;xoa bit cao mov al,bl ;gan al=bl chuan bi chia mov bx,10 mov cx,0 chia: mov dx,0 ;xoa bit cao div bx ;phep chia lay ax chia bl, thuong dat ax ;so du dat dx push dx ;dat dx vao stack inc cx ;tang cx de thuc hien vong lap cmp ax,0 ja chia mov ah,2 intong: pop dx ;lay du lieu trong stack gan vao dx add dl,30h int 21h loop intong kt: mov ah,9 lea dx,messkt int 21h
mov ah,1 int 21h mov ah,4ch int 21h end
Bài 10.Cài đặt thuật toán Bubble Sort dùng ASM. Thuật toán Bubble Sort theo ngôn ngữ C như sau: - Code:
-
for (int i = 0; i< N-1; i++) for(int j=N-1;j > i; j--) if(a[j] < a[j-1]) Hoan_Vi (a[j], a[j-1]);
- Code:
-
.model small .stack .data mess1 db 13,10, 'Nhap so phan tu cua mang(1-9): $' mess2 db 13,10, 'Nhap a[$' mess2_1 db ']=$' mess3 db 13,10, 'Mang sau khi da sap xep:$' mess4 db 13,10, 'a[$' mess4_1 db ']=$' messkt db 13,10, 'Nhan 1 phim de ket thuc ...$' A db ? .code mov ax,3 int 10h mov dx,seg mess1 mov ds,dx ;thong bao nhap so phan tu Nhap: mov ah,9 lea dx,mess1 int 21h mov ah,1 int 21h cmp al,'1' jb Nhap cmp al,'9' ja Nhap sub al,30h mov bl,al ;gan bl=al so phan tu da nhap mov si,0 mov ch,0 mov cl,bl ;gan cl=bl de xu ly trong vong lap Nhapmang: Nhappt: ;thong thong bao mov ah,9 lea dx,mess2 int 21h mov ah,2 mov dh,0 ;xoa bit cao mov dx,si add dl,30h int 21h mov ah,9 lea dx,mess2_1 int 21h mov ah,1 ;nhap gia tri cho mang int 21h cmp al,'0' jb Nhappt cmp al,'9' ja Nhappt sub al,30h mov a[si],al ;gan gia tri vua nhap vao mang inc si loop Nhapmang dec bl ;giam bl di 1 de sap xep bubble sort mov cl,bl ;gan cl=bl de thuc hien vong lap mov si,0 ;tra si ve 0 de sap xep trong mang fori: push cx ;dua cx vao stack, luu vong lap ngoai mov ch,0 ;xoa bit cao mov cl,bl ;gan cl=bl de thuc hien vong lap trong sub cx,si ;- di nhung so da so sanh roi mov di,si ;gan di=si inc di ;va tang di len 1 de so sanh ;giua so truoc va so sau mov dl,a[si] forj: cmp dl,a[di];so sanh dl(a[si]) voi di jb th ;neu dl nho hon thi nhay xuogn th mov bh,a[di];hoan vi giua a[si] va a[di] mov a[si],bh; mov a[di],dl; mov dl,a[si];gan dl=a[si] de so sanh tiep th: inc di ;tang di len loop forj inc si ;ket thuc vong lap tang si len pop cx ;gan cx=du lieu trong stack loop fori inc bl ;tang bl len 1 vi luc sap xep da giam di 1 mov ch,0 ;xoa bit cao mov cl,bl ;gan cl=bl de thuc hien vong lap mov si,0 ;tra vi tri mang ve 0 ;in mang mov ah,9 lea dx,mess3 int 21h inmang: mov ah,9 lea dx,mess4 int 21h mov ah,2 mov dh,0 ;xoa bit cao mov dx,si add dl,30h int 21h mov ah,9 lea dx,mess4_1 int 21h mov ah,2 mov dl,a[si] add dl,30h int 21h inc si loop inmang kt: mov ah,9 lea dx,messkt int 21h
mov ah,1 int 21h mov ah,4ch int 21h end
Bài 10 thì phần hướng dẫn trong file pdf không phải là thuật toán Bubble Sort đầu. Đó là thuật toán đưa số nhỏ nhất ra đầu rồi đến các số nhỏ tiếp theo trong mảng. Đây là thuật toán Bubble Sort viết theo cấu trúc C trong bài 10 - Code:
-
.model small .stack .data mess1 db 13,10, 'Nhap so phan tu cua mang(1-9): $' mess2 db 13,10, 'Nhap a[$' mess2_1 db ']=$' mess3 db 13,10, 'Mang sau khi da sap xep:$' mess4 db 13,10, 'a[$' mess4_1 db ']=$' messkt db 13,10, 'Nhan 1 phim de ket thuc ...$' A db ? .code mov ax,3 int 10h mov dx,seg mess1 mov ds,dx ;thong bao nhap so phan tu Nhap: mov ah,9 lea dx,mess1 int 21h mov ah,1 int 21h cmp al,'1' jb Nhap cmp al,'9' ja Nhap sub al,30h mov bl,al ;gan bl=al so phan tu da nhap mov si,0 mov ch,0 mov cl,bl ;gan cl=bl de xu ly trong vong lap Nhapmang: Nhappt: ;thong thong bao mov ah,9 lea dx,mess2 int 21h mov ah,2 mov dh,0 ;xoa bit cao mov dx,si add dl,30h int 21h mov ah,9 lea dx,mess2_1 int 21h mov ah,1 ;nhap gia tri cho mang int 21h cmp al,'0' jb Nhappt cmp al,'9' ja Nhappt sub al,30h mov a[si],al ;gan gia tri vua nhap vao mang inc si loop Nhapmang mov bh,0 ;xoa bit cao dec bl ;giam bl di 1 de sap xep bubble sort mov cl,bl ;gan cl=bl de thuc hien vong lap mov dx,0 fori: push cx ;dua cx vao stack, luu vong lap ngoai mov si,bx ;gan bien si=bx tuong duong voi n-1 ;trong huong dan forj: mov di,si dec di mov al,a[si] cmp al,a[di] jae th mov ah,a[di] mov a[si],ah mov a[di],al th: dec si loop forj pop cx ;gan cx=du lieu trong stack loop fori inc bl ;tang bl len 1 vi luc sap xep da giam di 1 mov ch,0 ;xoa bit cao mov cl,bl ;gan cl=bl de thuc hien vong lap mov si,0 ;tra vi tri mang ve 0 ;in mang mov ah,9 lea dx,mess3 int 21h inmang: mov ah,9 lea dx,mess4 int 21h mov ah,2 mov dh,0 ;xoa bit cao mov dx,si add dl,30h int 21h mov ah,9 lea dx,mess4_1 int 21h mov ah,2 mov dl,a[si] add dl,30h int 21h inc si loop inmang kt: mov ah,9 lea dx,messkt int 21h
mov ah,1 int 21h mov ah,4ch int 21h end
Còn đây là 2 bài ở F10 Bài 1: - nhập một số dạng ab sao cho ab thuộc {00, .., 16} - chuyển số ab sang dạng HEX - Code:
-
.model small .stack .data mess1 db 'Nhap 1 so ab(00->16): $' mess2 db 13,10, 'So ab o dang HEX la: $' messloi db 13,10, 'Nhap sai!',13,10, '$' messkt db 13,10, 'Nhan 1 phim de ket thuc ...!$' .code ;xoa man hinh mov ax,3 int 10h mov dx,seg mess1 mov ds,dx ;thong bao nhap Nhap: mov bh,39h ;gan bh=39h dung so sanh nhap so thu 2 mov ah,9 lea dx,mess1 int 21h mov ah,1 int 21h sub al,30h ;-30h de lay so vua nhap vao cmp al,0 je Nhap0 cmp al,1 je Nhap1 jmp Nhapsai Nhap1: mov ah,0 ;xoa bit cao cua ax mov cl,10 mul cl ;nhan al voi cl=10 tich tra ra ax mov bh,36h ;gan bh=36h dung so sanh nhap so thu 2 Nhap0: mov bl,al ;gan bl=al luu lai so vua nhap mov ah,1 int 21h cmp al,'0' jb Nhapsai cmp al,bh ;so sanh dieu kien voi bh da dat o tren ja Nhapsai
sub al,30h ;-30h de tra al ve so add bl,al ;cong al vao bl ;thong bao xuat so HEX mov ah,9 lea dx,mess2 int 21h cmp bl,16 je in16 cmp bl,9 ja inchu ;neu lon hon 9 thi nhay inchu jmp inso Nhapsai: mov ah,9 lea dx,messloi int 21h jmp Nhap inchu: add bl,7 ;gan theo ma ascii inso: add bl,48 ;gan theo ma ascii mov ah,2 mov dl,bl int 21h jmp kt in16: mov ah,2 mov dl,'1' int 21h mov dl,'0' int 21h kt: ;thong bao ket thuc mov ah,9 lea dx,messkt int 21h mov ah,1 int 21h mov ah,4ch int 21h end
Bài 2: - nhập một số dạng ab sao cho ab thuộc {00, .., 16} - chuyển số ab sang dạng HEX - Code:
-
.model small .stack .data mess1 db 13,10, 'Nhap 1 so tu 0-9: $' mess2 db 13,10, 'Nhap day bit(0|1): $' mess3_1 db 13,10, 'So luong bit 1 trong day la chan!$' mess3_2 db 13,10, 'So luong bit 1 trong day la le!$' mess4 db 13,10, 'So luong bit 1 trong day: $' messkt db 13,10, 'Nhan 1 phim de ket thuc ...$' n db 0 .code mov ax,3 int 10h mov dx,seg mess1 mov ds,dx ;thong bao nhap Nhap: mov ah,9 lea dx,mess1 int 21h mov ah,1 int 21h cmp al,'0' jb Nhap cmp al,'9' ja Nhap sub al,30h mov bl,al ;thong bao nhap day bit Nhapbit: mov ah,9 lea dx,mess2 int 21h mov ch,0 ;xoa bit cao trong cx mov cl,bl ;gan cl=bl de thuc hien vong lap mov dl,0 mov bh,1 mov ah,1 NH: int 21h cmp al,'0' je n0 cmp al,'1' je n1 jmp Nhapbit n1: inc dl neg bh n0: loop NH mov bl,dl cmp bh,1 je inchan mov ah,9 lea dx,mess3_2 int 21h jmp insobit1 inchan: mov ah,9 lea dx,mess3_1 int 21h
insobit1: mov ah,9 lea dx,mess4 int 21h mov ah,2 mov dl,bl add dl,30h int 21h kt: mov ah,9 lea dx,messkt int 21h mov ah,1 int 21h mov ah,4ch int 21h end
Hêt năm rồi nghỉ tết thôi. Chúc mọi người an tết vui vẻ!!!
Được sửa bởi nghthien ngày Sat Feb 19, 2011 7:27 pm; sửa lần 1. |
| | | Khách vi Khách viếng thăm
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Tue Jan 25, 2011 7:22 pm | |
| Bạn nghthien giỏi quá đã giải hết bài tập hợp ngữ cho phòng F109 còn làm luôn cho phòng F110, chắc cuối kỳ thi hợp ngữ ban nghthien sẽ đậu cao nhất lớp đó ...hay giỏi quá , cám ơn nhé đã giải thích cho anh em nắm lại bài |
| | | anhtraidalat Mod
Tổng số bài gửi : 139 Experience : 232 Danh Vọng : 6
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Tue Jan 25, 2011 9:23 pm | |
| Bài 2 ở F10( tren sai de nha !) - nhập một số n. n thuộc {0, .., 9} - nhập một dãy số dạng bit có n phần tử. - cho biết số lượng bit 1 trong dãy là chẵn hay lẻ - cho biết tổng số lượng bit 1 |
| | | nghthien Tri Phủ
Tổng số bài gửi : 61 Experience : 86 Danh Vọng : 4
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Tue Jan 25, 2011 11:01 pm | |
| Xin lỗi vì copy nến nhằm! Thanks anh Hiệp đã ghi đề lại |
| | | SuPerMod86 Dân nhập cư - Chưa có hộ khẩu
Tổng số bài gửi : 5 Experience : 5 Danh Vọng : 0
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Thu Jan 27, 2011 4:45 pm | |
| Bài 1 bên f110 sai rồi hay sao ấy bạn ơi xem lại dùm cái. |
| | | nghthien Tri Phủ
Tổng số bài gửi : 61 Experience : 86 Danh Vọng : 4
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Fri Jan 28, 2011 11:09 am | |
| Mình copy lại xem rồi, không sai đâu bạn ơi. Có lẽ bạn nhằm giữa số hệ 10 và hệ 16 đó, vì ở hệ 10 số 15 là chữ "F" ở hệ 16 đó, không phải số 16 đâu nha. Nên khi nhập 16 sẽ in là 10 ở hệ 16. Hoặc nếu mình có sai gì thì bạn nêu lên để mình sửa lại. |
| | | Khách vi Khách viếng thăm
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Fri Jan 28, 2011 12:21 pm | |
| - Code:
-
; multi-segment executable file template.
data segment ; add your data here! Tb1 db 13,10,13, " Nhap ten: $ " Tb2 db 13,10,13, " Hello ! $ " s db ?
ends
stack segment dw 128 dup(0) ends code segment start: ; set segment registers: mov ax, data mov ds, ax mov es, ax mov ax, 3 ; Xoa man hinh int 10h
; add your code here lea dx, Tb1 ;hien thi Tb1 mov ah, 9 int 21h ; output string at ds:dx mov ah,0Ah ; nhap so luong ky tu mov al,s add dx,2 keyloop: mov cx, 128 mov ah,1 int 21h cmp al,0Dh loopne keyloop lea dx, Tb2 ;hien thi Tb2 mov ah, 9 mov al,s int 21h ; output string at ds:dx mov ah,40h ; xuat chuoi s mov al,s mov al,Tb2
int 21h mov ah, 40h ; thiet bi xuat la man hinh mov bx, 1 ; wait for any key.... mov ah, 1 int 21h mov ax, 4c00h ; exit to operating system. int 21h ends
end start ; set entry point and stop the assembler. nhờ bạn nghthien giúp anh tìm chỗ sai ko hiểu sao mà khi nhập được chuỗi , khi xuất thì chỉ xuất hello! nhưng lại ko xuất kèm theo chuỗi đã nhập theo yêu cầu bài đã cho là Viết chương trình nhập tên và in ra màn hình câu “Hello ” + tên đã nhập ví dụ khi nhập tên nguyen tho quang thì xuất ra hello! nguyen tho quang mong tin gấp nhé bạn |
| | | SuPerMod86 Dân nhập cư - Chưa có hộ khẩu
Tổng số bài gửi : 5 Experience : 5 Danh Vọng : 0
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Fri Jan 28, 2011 3:21 pm | |
| Anh quang sai ở chỗ dùng int21h/0ah để nhập chuỗi thì không cần dùng mov ah, 1va2 vòng lặp để nhập nữa.nếu dùng int 21h / 0ah thì có bạn post rồi thì phải( hợp ngữ tuần 3) ở đây em dùng mov ah, 1 sửa lại nha.
[code] lea dx,Tb1 mov ah, 9 int 21h ; output string at ds:dx mov cx, 256 ; vong lap 256 ky tu mov si, 0 ; chi so cua mang Nhap: mov ah, 1 int 21h cmp al, 13 ; kiem tra enter je thoat mov s[si], al ; luu vao mang s inc si loop nhap thoat: lea dx, Tb2 mov ah, 9 int 21h ; output string at ds:dx mov bx, 0 mov cx, si ; dua so phan tu mang vao xuat: mov ah, 2 mov dl, s[bx] int 21h inc bx loop xuat |
| | | nghthien Tri Phủ
Tổng số bài gửi : 61 Experience : 86 Danh Vọng : 4
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Fri Jan 28, 2011 3:22 pm | |
| Bài của anh chương trình chỉ xuất ra 2 dòng là vì "lea dx, Tb1 ;hien thi Tb1 mov ah, 9 int 21h" 3 dòng đó xuất thông báo nhập, còn chữ hello là đây: "lea dx, Tb2 ;hien thi Tb2 mov ah, 9 mov al,s int 21h ; output string at ds:dx " Còn doạn "mov ah,0Ah ; nhap so luong ky tu mov al,s add dx,2 " không có nhập gì cả, vì chỉ khai báo mov ah,0Ah à, mờ không có int 21h.Còn phần nhập là nằm trong loop "keyloop: mov cx, 128 mov ah,1 int 21h cmp al,0Dh loopne keyloop" Nhưng trong đó anh chỉ nhập mờ không có lưu vào biến nào cả. Còn phần cuối là xuất chuỗi: "mov ah,40h ; xuat chuoi s mov al,s mov al,Tb2 int 21h" Xuất chuỗi bằng hàm mov ah,40h thì phải có lea dx giống như thông báo vậy. Nhưng do dữ liệu lúc anh nhập không có lưu trong biến s vì vậy, biến s không có dữ liệu, in không được. Ở trong file power point của thầy có hướng dẫn: mov ah,0Ah mov bx,seg s ;lấy địa chỉ đoạn của s mov ds,bx ;đưa địa chỉ đoạn của s vào ds mov dx,offset s ;đưa địa chỉ ô của s vào dx int 21h ; nhập liệu vào s Còn hàm 40h phai có các giá trị là độ dài chuỗi, địa chỉ đoạn của chuỗi mov ah,40h mov bx,1 ;bx=1 kết nối với màn hình mov ch,0 ;xoa bit cao mov cl,actlen ;độ dài của chuổi cần nhập vào lea dx,chars int 21h Đầy là bài mẫu anh xem sẽ rõ hơn: - Code:
-
.model small .stack .data mess1 db 'Nhap vao ten: $' mess2 db 13,10, 'Hello: $' messkt db 13,10, 'Nhan 1 phim de ket thuc ...!$' s label byte maxlen db 20h actlen db ? ;do dai chuoi nhap vao chars db 20h dup(?) ;chuoi nhap vao .code mov dx,seg mess1 ;lay dia chi doan cua chuong trinh mov ds,dx ;gan vao ds ;thong bao nhap mov ah,9 lea dx,mess1 int 21h mov ah,0ah lea dx,s ;lay dia chi o cua s dua vao dx int 21h ;nhap lieu vao s ;thong bao xuat mov ah,9 lea dx,mess2 int 21h mov ah,40h mov bx,1 mov ch,0 ;xoa bit cao mov cl,actlen lea dx,chars int 21h mov ah,9 lea dx,messkt int 21h mov ah,1 int 21h mov ah,4ch int 21h end
|
| | | SuPerMod86 Dân nhập cư - Chưa có hộ khẩu
Tổng số bài gửi : 5 Experience : 5 Danh Vọng : 0
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Fri Jan 28, 2011 4:20 pm | |
| có ai post bài 5 tìm USCLN không nhỉ |
| | | nghthien Tri Phủ
Tổng số bài gửi : 61 Experience : 86 Danh Vọng : 4
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Mon Jan 31, 2011 9:21 pm | |
| Bài 5 tìm USCLN - Code:
-
;Trong bai dung thuat giai tim uscln la lay so lon ;tru di so nho cho den khi 2 so bang nhau .model small .stack .data mess1 db 13,10, 'Nhap vao so nguyen N: $' mess2 db 13,10, 'Nhap vao so nguyen M: $' mess3 db 13,10, 'USCLN($' mess4 db ' la 2 so nguyen to cung nhau$' messkt db 13,10, 'Nhan 1 phim de ket thuc ...$' n dw 0 m dw 0 .code mov dx,seg mess1 mov ds,dx mov si,0 ;thong bao nhap n Nhap1: mov n,0 mov ah,9 lea dx,mess1 int 21h Nhapn: mov ah,1 int 21h cmp al,13 je ktn cmp al,'0' jb Nhap1 cmp al,'9' ja Nhap1 ;xu ly khi nhap hop le mov cx,10 sub al,30h mov bh,0 ;xoa bit cao mov bl,al mov ax,n mul cx add ax,bx mov n,ax jmp Nhapn ktn: cmp n,0 je Nhap1 ;thong bao nhap m Nhap2: mov m,0 mov ah,9 lea dx,mess2 int 21h Nhapm: mov ah,1 int 21h cmp al,13 je ktm cmp al,'0' jb Nhap2 cmp al,'9' ja Nhap2 ;xu ly khi nhap hop le mov cx,10 sub al,30h mov bh,0 ;xoa bit cao mov bl,al mov ax,m mul cx add ax,bx mov m,ax jmp Nhapm ktm: cmp m,0 je Nhap2 ;thong bao tim uoc so mov ah,9 lea dx,mess3 int 21h ;xuat n mov ax,n mov cx,0 mov bx,10 xuatax: mov dx,0 ;gan dx=0 de thuc hien phep chia div bx ;chia ax cho bx, thuong dat ax, so du dat dx push dx ;dua dx vao stack inc cx ;tang cx de in trong vong lap cmp ax,0 ;kiem tra ax=0 je xuat ;neu ax=0 thi ket thuc phan chia jmp xuatax xuat: pop dx ;lay du lieu trong stack add dl,30h ;cong them 30h de in ky tu so mov ah,2 int 21h loop xuat ;tang si de lam dieu kien in tiep theo inc si cmp si,2 je xuatngoac cmp si,3 je kt cmp si,4 je xuatm2 cmp si,5 je xuattbnt mov ah,2 mov dl,',' int 21h ;xuat m mov ax,m mov cx,0 mov bx,10 jmp xuatax xuatngoac: mov ah,2 mov dl,')' int 21h xuatbang: mov ah,2 mov dl,'=' int 21h ;xu ly tim uscln mov bx,n ;gan bx=n mov cx,m ;gan cx=m tim_us: cmp bx,1 je nguyento cmp bx,cx je bangnhau cmp bx,cx ja lon jmp nho bangnhau: mov ax,bx mov cx,0 mov bx,10 jmp xuatax lon: sub bx,cx jmp tim_us nho: sub cx,bx jmp tim_us nguyento: inc si mov ah,2 mov dl,'1' int 21h ;in xuong hang mov dl,13 int 21h mov dl,10 int 21h ;in => mov dl,'=' int 21h mov dl,'>' int 21h mov dl,' ' int 21h ;xuat n mov ax,n mov cx,0 mov bx,10 jmp xuatax ;xuat m xuatm2: mov ah,2 mov dl,',' int 21h ;gan ax=m de in ax mov ax,m mov cx,0 mov bx,10 jmp xuatax ;thong bao 2 so la so nguyen to xuattbnt: mov ah,9 lea dx,mess4 int 21h kt: mov ah,9 lea dx,messkt int 21h mov ah,1 int 21h mov ah,4ch int 21h end
Nếu có gì sai thì mọi người post lên để em sửa lại |
| | | phoenix51706 Trụ Cột 09TC
Tổng số bài gửi : 94 Experience : 163 Danh Vọng : 4
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Fri Feb 18, 2011 11:13 pm | |
| hôm rồi bạn Thiện có gửi bài tập 7 tuần 5 lên cho mọi người tham khảo. Hôm nay mình xin gửi lại bài này nhưng được sắp xếp theo cách mình thấy gần với lập trình C để ai chưa hiểu được sẽ hiểu kỹ. Góp chút gió để tạo bão chứ dạo này thấy forum post toàn mấy cái gì không chẳng thấy liên quan tới học hành gì hết. - Code:
-
.model small .stack .data tb1 db "nhap vao chieu dai: $" tb2 db 10, 13, "nhap vao chieu rong: $" dai db ? rong db ? .code mov ax, @data mov ds, ax mov ah, 9 mov dx, offset tb1 int 21h mov ah, 1 int 21h mov dai, al mov ah, 9 mov dx, offset tb2 int 21h mov ah, 1 int 21h mov rong, al mov cl, rong sub cl, 30h ;de so nhap vao dung la so mov ch, 0 ;xoa ch de cx(16bit)=cl(bit)= chieu rong (8bit) chieurong:
push cx mov ah, 2 mov dl, 13 ;xuong hang int 21h mov ah, 2 mov dl, 10 ;ra dau dong int 21h mov cl, dai sub cl, 30h ;de so nhap vao dung la so mov ch, 0 chieudai: mov ah, 2 mov dl, '*' ;in ra dau * int 21h loop chieudai pop cx loop chieurong mov ah, 4ch int 21h end |
| | | playback Nhất Đại Công Thần
Tổng số bài gửi : 103 Experience : 125 Danh Vọng : 3
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Sat Feb 19, 2011 8:41 am | |
| |
| | | nghthien Tri Phủ
Tổng số bài gửi : 61 Experience : 86 Danh Vọng : 4
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Sat Feb 19, 2011 7:33 pm | |
| Mình đã sửa bài 7 rồi, Bạn copy chạy thử lại xem. Vì khi nhập mình quên so sánh giá trị 0 nên vòng lặp chạy hoài. |
| | | vothien Dân nhập cư - Chưa có hộ khẩu
Tổng số bài gửi : 1 Experience : 1 Danh Vọng : 0
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Tue Mar 27, 2012 4:54 pm | |
| Viết chương trình kiểm tra một biểu thức đại số có chứa các dấu ngoặc (như (), [] và {}) là hợp lệ hay không hợp lệ . Ví dụ: (a + [b – { c * ( d – e ) } ] + f) là hợp lệ nhưng (a + [b – { c * ( d – e )] } + f) là không hợp lệ. """" ai giup minh voi " |
| | | nghthien Tri Phủ
Tổng số bài gửi : 61 Experience : 86 Danh Vọng : 4
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 Fri Apr 13, 2012 6:01 pm | |
| Bài này thì kiểm tra xem ngoặc nào mở trước thì ngoặc đó đóng trước, nếu khác thì báo lỗi. |
| | | Sponsored content
| Tiêu đề: Re: Bài tập hợp ngữ tuần 5 | |
| |
| | | |
Trang 1 trong tổng số 1 trang | |
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| |