1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề cương ôn tập môn kỹ thuật vi xử lý

38 555 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

Định dạng
Số trang 38
Dung lượng 98,5 KB

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

Nội dung

KỸ THUẬT VI XỬ LÝ ; ; BAI TAP 1 : Tổ chức chương trình ASSEMBLER16 đơn giảm ; CGROUP GROUP CODE_SEG,DATA_SEG ASSUME CS:CGROUP,DS:CGROUP ; CS trỏ tới manh lenh CODE_SEG SEGMENT PUBLIC ORG 100H ; bat dau từ dia chi 100 hex EXTRN KET_THUC:NEAR EXTRN INRA :NEAR ; ; Thủ tục chính : Chuyển byte mã HEX thành từ mã nhị phân trên màn hình ; HEX_NHị PROC NEAR ; mở thủ tục HEXA >biểu diễn NHị PHAN MOV BL,8AH ; hiển thị số 8A hexa CALL HIEN_THI ; gọi chương trình hiển thị CALL KET_THUC HEX_NHị ENDP HIEN_THI PROC NEAR MOV CX,08H DOI_MA: MOV DL,0H RCL BL,1H ADC DL,30H CALL INRA ; gọi thủ tục in ra màn hình từng bit từ file Thư viện LOOP DOI_MA HIEN_THI ENDP ; kết thúc Thủ tục chính ; CODE_SEG ENDS ; dòng mang lệnh ; DATA_SEG SEGMENT PUBLIC DATA_SEG ENDS ; END HEX_NHị ; kết thúc chương trình chính HEX_BIN ;

Trang 1

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

CGROUP GROUP CODE_SEG,DATA_SEG

ASSUME CS:CGROUP,DS:CGROUP ; CS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC

ORG 100H ; bat dau tõ dia chi 100 hex

EXTRN KET_THUC:NEAR

EXTRN INRA :NEAR

-

; -; Thñ tôc chÝnh : ChuyÓn byte m· HEX thµnh tõ m· nhÞ ph©n trªn mµn h×nh

-

; -HEX_NHÞ PROC NEAR ; më thñ tôc HEXA >biÓu diÔn NHÞ PHAN

MOV BL,8AH ; hiÓn thÞ sè 8A hexa

CALL HIEN_THI ; gäi ch¬ng tr×nh hiÓn thÞ

; -CODE_SEG ENDS ; dßng mang lÖnh

CGROUP GROUP CODE_SEG,DATA_SEG

ASSUME CS:CGROUP,DS:CGROUP; CS trá tíi m¶ng lÖnh

Trang 2

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

RET

INRA ENDP

; -; Thñ tôc kÕt thóc nhiÖm vô hiÖn hµnh de

; tra ®iÒu khiÓn ve ch¬ng tr×nh chÝnh (sö dông

; ham 4C hex cua DOS de m« pháng)

; CS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC

EXTRN KET_THUC:FAR ; gäi cac thñ tôc File Th viÖn

EXTRN INRA :FAR

Trang 3

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

; -; Thñ tôc kÕt thóc nhiÖm vô hiÖn hµnh de

; tra ®iÒu khiÓn ve ch¬ng tr×nh chÝnh (sö dông

; ham 4C hex cua DOS de më pháng)

CGROUP GROUP CODE_SEG,DATA_SEG

ASSUME CS:CGROUP,DS:CGROUP ; CS trá tíi manh lenh

; DS trá tíi manh lenh

; SS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC

ORG 100H ; bat dau tõ dia chi 100 hex

EXTRN WRITE_CHAR:NEAR ; sö dông thñ tôc trong file Th viÖn

EXTRN KET_THUC :NEAR

Trang 4

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

EXTRN GOTOXY :NEAR

MOV DX,1789 ; hiÓn thÞ sè 17 THAP PHAN

CALL WRITE_decimal ; gäi ch¬ng tr×nh hiÓn thÞ

; -;Thñ tôc in ra mµn h×nh (sö dông ham dich vu

; cua DOS trong PC de më pháng ch¬ng tr×nh can viet

Trang 5

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

Trang 6

; -Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

; Tæ chøc FILE Th viÖn sö dông ham dich vu

; cua DOS va BIOS PC de më pháng mot sè chuc

; nang cua he vi xu ly 16 bit can thiet ke

; -CGROUP GROUP CODE_SEG,DATA_SEG

ASSUME CS:CGROUP,DS:CGROUP

; DS trá tíi manh lenh

; SS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC ; më mang m· lenh

; -; Thñ tôc kÕt thóc nhiÖm vô hiÖn hµnh de

; tra ®iÒu khiÓn ve ch¬ng tr×nh chÝnh (sö dông

; ham 4C hex cua DOS de më pháng)

Trang 7

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

ASSUME CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG

; CS trá tíi manh lenh

; DS trá tíi manh lenh

; SS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC

ORG 100H ; bat dau tõ dia chi 100 hex

EXTRN WRITE_CHAR:FAR ; sö dông thñ tôc trong file Th viÖn

EXTRN KET_THUC :FAR

EXTRN GOTOXY :FAR

MOV DX,1789 ; hiÓn thÞ sè 17 THAP PHAN

CALL WRITE_decimal ; gäi ch¬ng tr×nh hiÓn thÞ

; -;Thñ tôc in ra mµn h×nh (sö dông ham dich vu

; cua DOS trong PC de më pháng ch¬ng tr×nh can viet

Trang 8

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

Trang 9

; -Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

CODE_SEG ENDS ; dßng mang lÖnh

; -; Tæ chøc FILE Th viÖn sö dông ham dich vu

; cua DOS va BIOS PC de më pháng mot sè chuc

; nang cua he vi xu ly 16 bit can thiet ke

; -ASSUME CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG

; DS trá tíi manh lenh

; SS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC ; më mang m· lenh

; -; Thñ tôc kÕt thóc nhiÖm vô hiÖn hµnh de

; tra ®iÒu khiÓn ve ch¬ng tr×nh chÝnh (sö dông

; ham 4C hex cua DOS de më pháng)

Trang 10

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

CGROUP GROUP CODE_SEG,DATA_SEG

ASSUME CS:CGROUP,DS:CGROUP ; CS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC

ORG 100H ; bat dau tõ dia chi 100 hex

; -HIEN_THI PROC NEAR ; më thñ tôc HIÓN THÞ

XOR DX,DX ; bat dau tõ offset DX=0000 hexa

MOV CX,17 ; hiÓn thÞ 16 dong

RAM_BUFFER:

CALL HIEN_THI_DONG ; hiÓn thÞ tõng dong 16 byte

CALL SEND_CRLF ; xuong dong ve dau dong

ADD DX,16 ; tang 16 bytes nua cho dong tiep

LOOP RAM_BUFFER ; lap lai voi sè lan trong CX

; thu tuc nay in tõng dong, moi dong I

; 16 byte chua trong RAM_BUFFER : I

; truoc tien o cua sè HEXA roi den I

; cua sè ASCII I

; -'

Trang 11

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

CALL WRITE_HEX ; gäi ch¬ng tr×nh in ra sè HEX

MOV DL,' ' ; dl=20hexa la m· khoang trang

JAE HEX_LETTER ;if equal then jump to Hex_letter

ADD DL,'0' ;dl cong voi m· asii cua 0

JMP SHORT WRITE_DIGIT

HEX_LETTER:

ADD DL,'A'-10 ;

WRITE_DIGIT:

Trang 12

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

; -; Tæ chøc FILE Th viÖn sö dông ham dich vu

; cua DOS va BIOS PC de më pháng mot sè chuc

; nang cua he vi xu ly 16 bit can thiet ke

; -CGROUP GROUP CODE_SEG,DATA_SEG

ASSUME CS:CGROUP,DS:CGROUP

; DS trá tíi manh du lieu

; CS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC ; më mang m· lenh

; -; Thñ tôc kÕt thóc nhiÖm vô hiÖn hµnh de

; tra ®iÒu khiÓn ve ch¬ng tr×nh chÝnh (sö dông

; ham 4C hex cua DOS de më pháng)

Trang 13

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

MOV AH,02H ; gäi ham dich vu cua DOS

INT 21H ; VE DAU DONG

; CS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC

; ORG 100H ; bat dau tõ dia chi 100 hex

Trang 14

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

MOV CX,16 ; hiÓn thÞ 16 dong

RAM_BUFFER:

CALL HIEN_THI_DONG ; hiÓn thÞ tõng dong 16 byte

CALL SEND_CRLF ; xuong dong ve dau dong

ADD BX,16 ; tang 16 bytes nua cho dong tiep

LOOP RAM_BUFFER ; lap lai voi sè lan trong CX

; thu tuc nay in tõng dong, moi dong I

; 16 byte chua trong RAM_BUFFER : I

; truoc tien o cua sè HEXA roi den I

CALL WRITE_HEX ; gäi ch¬ng tr×nh in ra sè HEX

MOV DL,' ' ; dl=20hexa la m· khoang trang

Trang 15

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

Trang 16

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

; -; Tæ chøc FILE Th viÖn sö dông ham dich vu

; cua DOS va BIOS PC de më pháng mot sè chuc

; nang cua he vi xu ly 16 bit can thiet ke

; -;CGROUP GROUP CODE_SEG,DATA_SEG

ASSUME CS:CODE_SEG,DS:DATA_SEG;SS:STACK_SEG

; DS trá tíi manh du lieu

; CS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC ; më mang m· lenh

; -; Thñ tôc kÕt thóc nhiÖm vô hiÖn hµnh de

; tra ®iÒu khiÓn ve ch¬ng tr×nh chÝnh (sö dông

; ham 4C hex cua DOS de më pháng)

MOV AH,02H ; gäi ham dich vu cua DOS

INT 21H ; VE DAU DONG

DATA_SEG ENDS

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&STACK_SEG SEGMENT

DB 10 DUP('STACK')

STACK_SEG ENDS

Trang 17

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

Promp1 DB 'Nhap sè thu 1: '

Promp2 DB 'Nhap sè thu 2: '

Promp3 DB 'Tong sè la: '

Fine LABEL BYTE

; -GETSTR PROC NEAR

DATA_SEG SEGMENT PUBLIC

EXTRN FLAG:WORD

DATA_SEG ENDS

PUSH AX

PUSH BX

Trang 18

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

Trang 19

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

; -; Tæ chøc FILE Th viÖn sö dông ham dich vu

; cua DOS va BIOS PC de më pháng mot sè chuc

; nang cua he vi xu ly 16 bit can thiet ke

Trang 20

; -Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

CGROUP GROUP CODE_SEG,DATA_SEG

ASSUME CS:CGROUP,DS:CGROUP

; DS trá tíi manh lenh

; SS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC ; më mang m· lenh

; -; Thñ tôc kÕt thóc nhiÖm vô hiÖn hµnh de

; tra ®iÒu khiÓn ve ch¬ng tr×nh chÝnh (sö dông

; ham 4C hex cua DOS de më pháng)

; -;Thñ tôc nay de doc TT tõ tap tin hay TB vao/ra

;vao dem DS:DX trá tíi(co the file trong BX, so

;byte can doc trong CX

; -;Thñ tôc nay de ghi TT vao tap tin hay TB vao/ra

;tõ vung dem DS:DX trá tíi(co the file trong BX,

;sè byte can doc trong CX

Trang 21

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

; dông duoc dat trong File Th viÖn BT4e.LIB

; -;Mang du lieu chua cac bien cac thong bao can

; thiet cho chuong trinh

DATA_SEG SEGMENT PUBLIC

BUFFER DB 7 DUP(?) ; dem bo nho

DIGIT DB ?

n1 DW ? ; sè hang thu nhat duoc chua o day

n2 DW ? ; sè hang thu hai

sum DW ? ; tong

BIEN_GET DW 0 ; bien trung gian

BIEN_2NUM DW 0 ;bien trung gian

Promp1 DB 'Nhap sè thu 1: '

Promp2 DB 'Nhap sè thu 2: '

; -ADDn PROC FAR

mov ax,data_seg ; DS trá tíi mang DATA_SEG

MOV DS,AX

MOV DX, OFFSET Promp1

MOV CX, OFFSET Promp2- OFFSET Promp1

CALL WRITETEXT ; in dong ' sè hang thu nhat:'

CALL GETSTR ; chuan bi nhan sè hang thu nhat

CALL STR2NUM

MOV AX,[BIEN_2NUM]

MOV n1,AX

MOV DX, OFFSET Promp2

MOV CX,OFFSET Promp3- OFFSET Promp2

CALL WRITETEXT ; in dong 'sè hang thu hai:'

CALL GETSTR ; chuan bi nhan sè hang thu hai

CALL STR2NUM

MOV AX,[BIEN_2NUM]

MOV n2,AX

CALL ADDn1n2

MOV DX,OFFSET Promp3

MOV CX,OFFSET Fine-OFFSET Promp3

; -;Doc mang hay File co the File trong BX,

;sè luong byte trong CX Neu doc thµnh

Trang 22

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

;cong thi con tro File se dat o ngay sau

; ph©n vua doc

; -GETSTR PROC NEAR

DATA_SEG SEGMENT PUBLIC

MOV BX,00H ; the file

MOV CX,07H ; sè byte can doc

MOV DX,OFFSET BUFFER ; dat DS:DX vao dau mang BUFFER CALL GETSTRING

MOV AX,[FLAG] ; co FLAG chua bo byte thuc su doc duoc SUB AX,02H

; -;Ghi mang hay File co the File trong BX,

;sè luong byte trong CX Neu ghi thµnh

;cong thi con tro File se dat o ngay sau

MOV BX,01H ;the File

MOV CX,01H ; sè luong byte can ghi

MOV DX,OFFSET DIGIT

MOV BX,10 ; chuan bi nhan 10

MOV SI,OFFSET BUFFER ; dat DS:SI vao dem BUFFER

MOV DH,00H

Trang 23

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

PUSH DX ;cat vao STACK sè du chÝnh la chu so

;co trong sè nho nhat hiÖn hµnh

POP DX ;khoi phuc lai cac chu sè tõ STACK theo

;thu tõ nguoc lai

Trang 24

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

; -; Tæ chøc FILE Th viÖn sö dông ham dich vu

; cua DOS va BIOS PC de më pháng mot sè chuc

; nang cua he vi xu ly 16 bit can thiet ke

; -;CGROUP GROUP CODE_SEG,DATA_SEG

ASSUME CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG

; DS trá tíi manh lenh

; SS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC ; më mang m· lenh

; -; Thñ tôc kÕt thóc nhiÖm vô hiÖn hµnh de

; tra ®iÒu khiÓn ve ch¬ng tr×nh chÝnh (sö dông

; ham 4C hex cua DOS de më pháng)

; -;Thñ tôc nay de doc TT tõ tap tin hay TB vao/ra

;vao dem DS:DX trá tíi(co the file trong BX, so

;byte can doc trong CX

Trang 25

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

RET

GETSTRING ENDP

; -;Thñ tôc nay de ghi TT vao tap tin hay TB vao/ra

;tõ vung dem DS:DX trá tíi(co the file trong BX,

;sè byte can doc trong CX

; -; Ph©n nay khai bao cac hang ky hieu cho cac ky tõ

; do hoa trong bang m· ASCII de ve khung

; -vertical_bar equ 0bah ;Thµnh ngang

horizontal_bar equ 0cdh ;Thµnh dung

upper_left equ 0c9h ;Thµnh khep goc tren ben trai

upper_right equ 0bbh ;Thµnh khep goc tren ben phai

lower_left equ 0c8h ;Thµnh khep goc duoi ben trai

lower_right equ 0bch ;Thµnh khep goc ben phai

top_t_bar equ 0cbh ;Thµnh chu T

bottom_t_bar equ 0cah ;Thµnh chu T nguoc

top_tick equ 0d1h ;Thµnh vach manh

bottom_tick equ 0cfh ;Thµnh vach manh phia duoi

code_seg segment public

public write_pattern

extrn write_char:far ; 3 thñ tôc o ham Th viÖn

Trang 26

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

extrn gotoXY :far ;

extrn ket_thuc :far

; -;Thñ tôc WRITE_PATTERN de ve khung bang cac ky tõ

;do hoa cua bang m· ASCII

; -write_pattern proc far

data_seg segment public

extrn Dong:byte ; bien dong mµn h×nh TEXT

extrn Cot :byte ; bien cot mµn h×nh TEXT

data_seg ends

cld ; dat co huong = 0 (Direction=0)

mov ax,data_seg ; cho DS trá tíi mang DATA_SEG

mov ds,ax

mov bx,02h ;

mov dx,offset top_line_pattern; DX trá tíi CSDL cua duong ngang ; cua khung can ve

mov dong,05h ; lay toa do X va Y vao bien 'dong' va 'cot'

mov Cot, 00h ; (dong:5 cot:0)

call gotoXY ; gäi thñ tôc dat con tro mµn h×nh vao toa

lodsb ; nhan byte CSDL vao AL cua bo VXL

or al,al ; kiem tra da toi cuoi CSDL chua?

jz end_pattern ; neu roi thi kÕt thóc

mov dl,al ; neu chua thi ChuyÓn AL vao DL

lodsb ; nhan tiep byte tiep theo va ChuyÓn

; vao AL

mov cl,al ; ChuyÓn vao thµnh dem CL de sö dông

; lenh LOOP

xor ch,ch

write_n_times : ; nhan nay in ky tõ trong DL voi so

; lan bang gia tri chua trong CL

call write_char ; gäi thñ tôc in 1 ky tõ trong DL ra mµn h×nh

Trang 27

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

code_seg ends

data_seg segment public

; -; Cau truc cua duong ngang phia tren

; tham sè dau la ky tõ do hoa, tham so

; thu hai la sè luong ky tõ can in ra

; -; Tæ chøc FILE Th viÖn sö dông ham dich vu

; cua DOS va BIOS PC de më pháng mot sè chuc

; nang cua he vi xu ly 16 bit can thiet ke

; -ASSUME CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG

; DS trá tíi manh lenh

; SS trá tíi manh lenh

CODE_SEG SEGMENT PUBLIC ; më mang m· lenh

PUBLIC WRITE_CHAR

Trang 28

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

WRITE_CHAR PROC FAR

MOV DH,Dong; Toa do dong cua mµn h×nh TEXT

MOV DL,Cot; Toa do cot cua mµn h×nh TEXT

; -; Thñ tôc kÕt thóc nhiÖm vô hiÖn hµnh de

; tra ®iÒu khiÓn ve ch¬ng tr×nh chÝnh (sö dông

; ham 4C hex cua DOS de më pháng)

Trang 29

Trêng §¹i häc d©n lËp §«ng §« - Khoa C«ng nghÖ th«ng tin

; -; Ph©n nay khai bao cac hang ky hieu cho cac ky tu

; do hoa trong bang m· ASCII de ve khung

; -vertical_bar equ 0bah ;Thµnh ngang

horizontal_bar equ 0cdh ;Thµnh dung

upper_left equ 0c9h ;Thµnh khep goc tren ben trai

upper_right equ 0bbh ;Thµnh khep goc tren ben phai

lower_left equ 0c8h ;Thµnh khep goc duoi ben trai

lower_right equ 0bch ;Thµnh khep goc ben phai

top_t_bar equ 0cbh ;Thµnh chu T

bottom_t_bar equ 0cah ;Thµnh chu T nguoc

top_tick equ 0d1h ;Thµnh vach manh

bottom_tick equ 0cfh ;Thµnh vach manh phia duoi

code_seg segment public

MOV BX,OFFSET BUFFER_OFFSET

MOV CX,16 ; hiÓn thÞ 16 dong

RAM_BUFFER:

CALL HIEN_THI_DONG ; hiÓn thÞ tõng dong 16 byte

CALL SEND_CRLF ; xuong dong ve dau dong

ADD BX,16 ; tang 16 bytes nua cho dong tiep

LOOP RAM_BUFFER ; lap lai voi sè lan trong CX

; thu tuc nay in tõng dong, moi dong I

; 16 byte chua trong RAM_BUFFER : I

; truoc tien o cua sè HEXA roi den I

; cua sè ASCII I

; -'

PUSH AX

Ngày đăng: 16/05/2016, 13:57

TỪ KHÓA LIÊN QUAN

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

w