1. Trang chủ
  2. » Công Nghệ Thông Tin

HỆ VI XỬ LÝ VÀ MÁY TÍNH

27 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hệ Vi Xử Lý Và Máy Tính
Tác giả Nguyễn Quang Vũ
Người hướng dẫn T.S Nguyễn Đức Khoát
Trường học Trường Đại Học Mỏ-Địa Chất
Chuyên ngành Hệ Vi Xử Lý Và Máy Tính
Thể loại Bài Tập Lớn
Năm xuất bản 2014
Thành phố Hà Nội
Định dạng
Số trang 27
Dung lượng 652,36 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

Hà Nội, 12/2014

Trang 2

2 NGUYỄN QUANG VŨ _ 1221060497

Bài 1 Viết chương trình thực hiện các công việc sau: Hiển thị kí tự ”!”

Đọc hai chữ số thập phân có tổng nhỏ hơn 10

Hiển thị các số đó và thông báo tổng của hai số đó

Trang 4

4 NGUYỄN QUANG VŨ _ 1221060497

Bài 2 Viết chương trình thực hiện các công việc sau:

Hiển thị thông báo nhập số liệu

Nhập vào 3 chữ cái đầu tương ứng với: Họ, Tên đệm, Tên

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);

Trang 6

6 NGUYỄN QUANG VŨ _ 1221060497

Bài 3 Viết một chương trình đọc một chữ số Hex rồi hiển thị chúng dưới dạng nhị phân

 Lưu đồ:

Trang 9

strupr(s);

int trong_so=1,i,so,temp=0;

for (i=strlen(s)-1;i>=0;i ) {

switch (s[i]) {

Trang 10

10 NGUYỄN QUANG VŨ _ 1221060497

case '8':

case '9':

so=s[i]-0x30; break;

default:

so=-1;

break;

} if(so==-1) {

return -1;

} else {

temp+=so*trong_so; trong_so=trong_so*16; }

} return temp;

} int main() {

char hex[100]="41";

char c=(char)hexa_to_dec(hex); printf("%c",c);

main proc mov ax,@data mov ds,ax mov ah,2h mov dl,hex int 21h ket_thuc:

mov ah,4Ch int 21h main endp end main

Trang 11

11 NGUYỄN QUANG VŨ _ 1221060497

Kiểu Word

 Lưu đồ:

Trang 12

strupr(s);

int trong_so=1,i,so,temp=0;

for (i=strlen(s)-1;i>=0;i ) {

switch (s[i]) {

default:

so=-1;

break;

} if(so==-1) {

return -1;

} else {

temp+=so*trong_so; trong_so=trong_so*16; }

} return temp;

}

Trang 13

13 NGUYỄN QUANG VŨ _ 1221060497

int main() {

char hex[100]="5675";

char c;

int i,j=0xFF00,k=8,temp,h[100]; temp=hexa_to_dec(hex);

for(i=0;i<2;i++) {

h[i]=(temp&j)>>k; k-=8;

j=j>>8;

} for(i=0;i<2;i++) {

printf("%c",h[i]);

} getchar();

return 0;

}

 ASM:

.model small stack 100h data hex dw 5655h

i dw ?

j dw 0FF00h

k db 8

h db 2 dup(?) code

main proc mov ax,@data mov ds,ax mov i,0 tach_byte:

cmp i,2 jnl tach_xong mov bx,j mov cl,k mov ax,hex and ax,bx shr ax,cl mov di,i mov h[di],al sub k,8 shr bx,8 mov j,bx inc i jmp tach_byte tach_xong:

mov i,0

Trang 14

14 NGUYỄN QUANG VŨ _ 1221060497

inra:

cmp i,2 jnl ket_thuc mov di,i mov ah,2h mov dl,h[di]

int 21h inc i jmp inra ket_thuc:

mov ah,4Ch int 21h main endp end main

 ASM 2:

;hex sang ascii kieu word model small

.stack 100h data hex dw 4142h msg db 10,13,'ma ascii la: $' code

main proc mov ax,@data mov ds,ax mov bx,hex mov ah,9 lea dx,msg int 21h mov ah,2 mov dl,bh int 21h mov dl,bl int 21h mov ah,4ch int 21h main endp end main

Trang 15

15 NGUYỄN QUANG VŨ _ 1221060497

Kiểu Double Word

 Lưu đồ:

Trang 16

strupr(s);

int trong_so=1,i,so,temp=0;

for (i=strlen(s)-1;i>=0;i ) {

switch (s[i]) {

default:

so=-1;

break;

} if(so==-1) {

return -1;

} else {

temp+=so*trong_so;

Trang 17

17 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<4;i++) {

h[i]=(temp&j)>>k;

k-=8;

j=j>>8;

} for(i=0;i<4;i++) {

printf("%c",h[i]);

} getchar();

return 0;

}

 ASM:

.model small stack 100h data hex dd 4e515675h word1 dw ? word2 dw ?

i dw ?

j dw 0FF00h

k db 8

h db 4 dup(?) code

main proc mov ax,@data mov ds,ax

les bx,hex mov word1,es

Trang 18

18 NGUYỄN QUANG VŨ _ 1221060497

mov word2,bx mov ds,ax mov i,0

tach_byte_w1:

cmp i,2 jnb tach_xong_w1 mov bx,j

mov cl,k mov ax,word1 and ax,bx shr ax,cl mov di,i mov h[di],al sub k,8 shr bx,8 mov j,bx inc i jmp tach_byte_w1 tach_xong_w1:

mov j,0FF00h mov k,8 tach_byte_w2:

cmp i,4 jnb tach_xong_w2 mov bx,j

mov cl,k mov ax,word2 and ax,bx shr ax,cl mov di,i mov h[di],al sub k,8 shr bx,8 mov j,bx inc i jmp tach_byte_w2 tach_xong_w2:

mov i,0 inra:

cmp i,4 jnb ket_thuc mov di,i mov ah,2h mov dl,h[di]

Trang 19

19 NGUYỄN QUANG VŨ _ 1221060497

int 21h inc i jmp inra ket_thuc:

mov ah,4Ch int 21h main endp end main

Trang 20

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

Trang 21

21 NGUYỄN QUANG VŨ _ 1221060497

mov bl,0xf0 and ascii,bl mov cl,4 ;dich sang phai 4 bit shr ascii,cl ; duoc so 1

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 2 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

Trang 22

22 NGUYỄN QUANG VŨ _ 1221060497

Kiểu Word

 Lưu đồ:

Trang 23

char c[2]="VU";

int h[2],i,first,second;

for (i=0;i<2;i++) {

h[i]=(int)c[i];

} for (i=0;i<2;i++) {

first=(h[i]&0xF0)>>4;

second=(h[i]&0x0F)>>0; printf("\n%x%x",first,second); }

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

Trang 24

24 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

Trang 25

25 NGUYỄN QUANG VŨ _ 1221060497

Kiểu Double Word

 Lưu đồ:

Trang 26

char c[4]="q Vu";

int h[4],i,first,second;

for (i=0;i<4;i++) {

h[i]=(int)c[i];

} for (i=0;i<4;i++) {

first=(h[i]&0xF0)>>4;

second=(h[i]&0x0F)>>0; printf("\n%x%x",first,second); }

h db 4 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

Trang 27

27 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

Ngày đăng: 03/10/2022, 11:26

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w