1 NGUYỄN QUANG VŨ 1221060497 TRƯỜNG ĐẠI HỌC MỎ ĐỊA CHẤT BỘ MÔN TỰ ĐỘNG HÓA BÀI TẬP LỚN HỆ VI XỬ LÝ VÀ MÁY TÍNH Giảng viên T S Nguyễn Đức Khoát Sinh viên Nguyễn Quang Vũ MSV 1221060497 Lớp Tự động hóa.
TRƯỜNG ĐẠI HỌC MỎ-ĐỊA CHẤT BỘ MƠN TỰ ĐỘNG HĨA BÀI TẬP LỚN HỆ VI XỬ LÝ VÀ MÁY TÍNH Giảng viên: T.S Nguyễn Đức Khoát Sinh viên: Nguyễn Quang Vũ MSV: 1221060497 Lớp: Tự động hóa A- K57 Nhóm : Hà Nội, 12/2014 NGUYỄN QUANG VŨ _ 1221060497 Bài Viết chương trình thực cơng việc sau: Hiển thị kí tự ”!” Đọc hai chữ số thập phân có tổng nhỏ 10 Hiển thị số thơng báo tổng hai số Lưu đồ: C: #include #include int main() { char c='!'; int a=2,b=3,s; printf("%c",c); s=a+b; printf("\n%d %d Tong la: %d",a,b,s); getchar(); return 0; } NGUYỄN QUANG VŨ _ 1221060497 ASM: model small stack 100h data a db b db msg db 10,13,'tong cua chung la: $' code main proc mov ax,@data mov ds,ax mov ah,2 mov dl,21h ;hien dau ! int 21h mov dl,0ah ; xuong dong int 21h mov dl,0dh ; ve dau dong int 21h mov bl,a ;doc so a mov bh,b ;doc so b mov cl,bh add cl,bl add cl,30h add bh,30h add bl,30h mov ah,2 mov dl,bl ;in so a int 21h mov dl,20h ; dau cach int 21h mov dl,bh ;in so b int 21h mov dl,20h ; dau cach int 21h lea dx,msg ;hien thong bao tong mov ah,9 int 21h mov ah,2 mov dl,cl ;in tong int 21h ;ket thuc mov ah,4ch int 21h main endp end main NGUYỄN QUANG VŨ _ 1221060497 Bài Viết chương trình thực cơng việc sau: Hiển thị thông báo nhập số liệu Nhập vào chữ đầu tương ứng với: Họ, Tên đệm, Tên Hiển thị lên hình Lưu đồ: C: #include #include int main() { char ho,dem,ten; printf("Nhap chu cai dau tuong ung Ho, Dem, Ten: "); scanf("%c %c %c",&ho ,&dem, &ten); printf("\nVua nhap vao: %c %c %c",ho,dem,ten); getch(); return 0; } ASM: model small stack 100h data msg1 db 'nhap vao cac chu cai dau tuong ung voi ho, ten dem, ten $' msg2 db 10,13,'ban vua nhap $' ho db ? tendem db ? ten db ? code main proc mov ax,@data mov ds,ax lea dx,msg1 mov ah,9 NGUYỄN QUANG VŨ _ 1221060497 int 21h mov ah,1 int 21h mov ho,al mov ah,1 int 21h mov tendem,al mov ah,1 int 21h mov ten,al lea dx,msg2 mov ah,9 int 21h ;dau cach mov ah,2 mov dl,20h int 21h mov ah,2 mov dl, ho int 21h ;dau cach mov ah,2 mov dl,20h int 21h mov ah,2 mov dl,tendem int 21h ;dau cach mov ah,2 mov dl,20h int 21h mov ah,2 mov dl,ten int 21h mov ah,4ch int 21h main endp end main NGUYỄN QUANG VŨ _ 1221060497 Bài Viết chương trình đọc chữ số Hex hiển thị chúng dạng nhị phân Lưu đồ: NGUYỄN QUANG VŨ _ 1221060497 C: #include #include int main() { char h='a'; if(h>=0x61 && h=0x41 && h=0x30 && h>8; } for(i=0;i=0;i ) { switch (s[i]) { case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': so=s[i]-0x37; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': so=s[i]-0x30; break; default: so=-1; break; } if(so==-1) { return -1; } else { temp+=so*trong_so; 16 NGUYỄN QUANG VŨ _ 1221060497 trong_so=trong_so*16; } } return temp; } int main() { char hex[100]="4e515675"; char c; int i,j=0xFF000000,k=24,temp,h[100]; temp=hexa_to_dec(hex); for(i=0;i>k; k-=8; j=j>>8; } for(i=0;i>4; second=(d&0x0F)>>0; printf("%x%x",first,second); getchar(); return 0; } ASM: model small stack 100h data ascii db ‘A’ msg db 0Dh,0Ah,"so hex tuong ung: $" code main proc mov ax,@data mov ds,ax mov bh,ascii NGUYỄN QUANG VŨ _ 1221060497 mov bl,0xf0 and ascii,bl mov cl,4 ;dich sang phai bit shr ascii,cl ; duoc so cmp ascii,9 ja nhay add ascii,30h jmp nhay1 nhay: add ascii,37h nhay1: mov ch,0x0f and bh,ch cmp bh,9 ja nhay2 ;da duoc so add bh,30h jmp xuat nhay2: add bh,37h xuat: lea dx,msg mov ah,9 int 21h mov ah,2 mov dl,ascii int 21h mov dl,bh int 21h ketthuc: mov ah,4ch int 21h main endp end main 21 NGUYỄN QUANG VŨ _ 1221060497 22 Kiểu Word Lưu đồ: NGUYỄN QUANG VŨ _ 1221060497 C: #include #include int main() { char c[2]="VU"; int h[2],i,first,second; for (i=0;i4; second=(h[i]&0x0F)>>0; printf("\n%x%x",first,second); } getchar(); return 0; } ASM: model small stack 100h data ascii dw 'vu ' msg db 10,13,'ma hex la: $',20h code main proc mov ax,@data mov ds,ax mov bx,ascii xchg bh,bl mov ah,2 mov dl,0ah int 21h mov dl,0dh int 21h mov cl,4 mov ch,bh mov dh,1 mov al,bh tiep1: and ch,0x0f0h shr ch,cl add ch,30h and al,0x0fh cmp al,9 ja chu add al,30h 23 NGUYỄN QUANG VŨ _ 1221060497 jmp xuat chu: add al,37h jmp xuat xuat: mov bh,al mov ah,2 mov dl,ch int 21h mov ah,2 mov dl,bh int 21h inc dh mov ch,bl mov al,bl cmp dh,2 je tiep1 ketthuc: mov ah,4ch int 21h main endp end main 24 NGUYỄN QUANG VŨ _ 1221060497 25 Kiểu Double Word Lưu đồ: NGUYỄN QUANG VŨ _ 1221060497 C: #include #include int main() { char c[4]="q Vu"; int h[4],i,first,second; for (i=0;i4; second=(h[i]&0x0F)>>0; printf("\n%x%x",first,second); } getchar(); return 0; } ASM: model small stack 100h data ascii dw '-)ab' h db dup(?) temp db ? code mov ax,@data mov ds,ax mov cx,4 mov di,0 ep_mang: mov bl,ascii[di] mov h[di],bl inc di loop ep_mang mov cx,4 mov di,0 xuat_mang: call newline mov ax,h[di] and al,0F0h shr al,4 mov temp,al call inra_hex mov ax,h[di] and al,0Fh shr al,0 26 NGUYỄN QUANG VŨ _ 1221060497 mov temp,al inc di call inra_hex loop xuat_mang ket_thuc: mov ah,4Ch int 21h main endp end main inra_hex proc mov ah,2h mov dl,temp cmp dl,10d jl la_so jmp la_chu la_so: add dl,30h int 21h ret la_chu: add dl,37h int 21h ret inra_hex endp newline proc mov ah,2h mov dl,0Dh int 21h mov ah,2h mov dl,0Ah int 21h ret newline endp end 27 NGUYỄN QUANG VŨ _ 1221060497 ... int 21h main endp end main NGUYỄN QUANG VŨ _ 1221060497 Bài Vi? ??t chương trình thực cơng vi? ??c sau: Hiển thị thông báo nhập số liệu Nhập vào chữ đầu tương ứng với: Họ, Tên đệm, Tên Hiển thị lên hình...Bài Vi? ??t chương trình thực cơng vi? ??c sau: Hiển thị kí tự ”!” Đọc hai chữ số thập phân có tổng nhỏ 10 Hiển thị số thơng... ah,2 mov dl,ten int 21h mov ah,4ch int 21h main endp end main NGUYỄN QUANG VŨ _ 1221060497 Bài Vi? ??t chương trình đọc chữ số Hex hiển thị chúng dạng nhị phân Lưu đồ: NGUYỄN QUANG VŨ _ 1221060497