You are on page 1of 18

Ti liu thc hnh Vi x l

BI 1: PHN MM M PHNG 8086 MICROPROCESSOR EMULATOR (EMU8086)

MC CH

Gip sinh vin kho st cc vn sau: S dng phn mm Emu8086 m phng hot ng ca vi x l 8086.
THIT B S DNG

My vi tnh. Phn mm Emu8086

1. Gii thiu.
Phn mm Emu8086 l phn mm cho php m phng hot ng ca vi x l 8086 bao gm cc cu lnh c bn ca 8086, x l ngt mm, giao tip vi thit b ngoi vi, Khi ng chng trnh Start > All Program > emu8086 > emu8086

GV: Phm Hng Kim Khnh

Trang 1

Ti liu thc hnh Vi x l

Ca s chng trnh sau khi khi ng: Thanh cng c chun

Vng khng gian son tho chng trnh

S dng thanh cng c chun:

New: to file mi

Save: lu tr file Emulate: bin dch v thc hin m phng

Open: m file c sn

Compile: bin dch file

Cc thao tc trn thanh cng c chun cng c th thc hin thng qua menu File v menu Emulator. To v thc thi chng trnh: Nhn New trn thanh cng c s xut hin ca s chn loi file:

GV: Phm Hng Kim Khnh

Trang 2

Ti liu thc hnh Vi x l

Nhn Cancel b qua, ca s son tho ca chng trnh s xut hin. Son chng trnh hp ng v nhn vo nt Emulate bin dch v m phng chng trnh.

Sau khi bin dch thnh cng (khng c li trong chng trnh), Emu8086 s m thm 2 ca s: ca s chng trnh gc v ca s m phng. Chng trnh gc:

GV: Phm Hng Kim Khnh

Trang 3

Ti liu thc hnh Vi x l Nhn Run thc thi

Ca s m phng:

Nu chng trnh c li, ca s thng bo li s xut hin:


Dng li Li ti dng 11

GV: Phm Hng Kim Khnh

Trang 4

Ti liu thc hnh Vi x l

Nhn Close quay li ca s son tho. Cu trc chng trnh 8086: .model small .stack 100h .data ;Khai bao du lieu .code main proc mov ax,@data mov ds,ax ;Chuong trinh hop ngu mov ah,4Ch int 21h main endp ;----- Cac chuong trinh con --Ctc1 proc ; Ma lenh cua chuong trinh con ret Ctc1 endp ;----------End

2. C s l thuyt
2.1. Ngt 21h
Hm 01h: nhp mt k t t bn phm v hin k t nhp ra mn hnh. Nu khng c k t nhp, hm 01h s i cho n khi nhp. - Gi: AH = 01h - Tr v: AL cha m ASCII ca k t nhp MOV AH,01h INT 21h ; AL cha m ASCII ca k t nhp Hm 02h: xut mt k t trong thanh ghi DL ra mn hnh ti v tr con tr hin hnh - Gi AH = 02h, DL = m ASCII ca k t - Tr v: khng c MOV AH,02h MOV DL,'A'
GV: Phm Hng Kim Khnh Trang 5

Ti liu thc hnh Vi x l

INT

21h

Hm 08h: ging hm 01h nhng khng hin th k t ra mn hnh Hm 09h: xut mt chui k t ra mn hnh ti v tr con tr hin hnh, a ch chui c cha trong DS:DX v phi c kt thc bng k t $ - Gi AH = 09h, DS:DX = a ch chui - Tr v: khng c .DATA Msg MOV LEA INT

DB

'Hello$'

AH,09h DX,Msg 21h

Hm 0Ah: nhp mt chui k t t bn phm (ti a 255 k t), dng phm ENTER kt thc chui - Gi AH = 0Ah, DS:DX = a ch lu chui - Tr v: khng c Chui phi c dng sau: Byte 0: S byte ti a cn c (k c k t Enter) Byte 1: s byte c Byte 2: lu cc k t c .DATA Msg DB DB MOV LEA INT

DB ? 101

101 DUP(?)

; c ti a 100 k t

AH,0Ah DX,Msg 21h

Hm 0Bh: kim tra phm nhn trn bn phm Gi: AH = 0Bh Tr v: AL = 0FFh nu c nhn phm, AL = 0 nu khng nhn phm Hm 4Ch: kt thc chng trnh MOV AH,4Ch INT 21h

2.2.

Ngt 10h

Hm 02h: Gi AH = 02h, DH = dng, DL = ct MOV AH,02h MOV DX,0F15h INT 10h


GV: Phm Hng Kim Khnh Trang 6

Ti liu thc hnh Vi x l

3. Tin trnh thc hin


3.1. Cc lnh c bn Bi 1.1: Thc hin chng trnh sau (cng 49h vi 8Ah): .model small .stack 100h .data msg db 'Hello$' .code main proc mov ax,@data mov ds,ax

mov al,49h add al,8Ah

mov ah,4Ch int 21h main endp ;----------End

Nhn vo nt Emulate thc hin m phng. Ti ca s m phng, chn menu View > Flags hin th ni dung cc c.

GV: Phm Hng Kim Khnh

Trang 7

Ti liu thc hnh Vi x l

Ca s flags cho php xem ni dung ca cc c:

Nhn nt Run thc thi chng trnh v quan st ni dung cc c. Gii thch. Bi 1.2: Thc hin chng trnh cng 2 s v kim tra ni dung cc c: CF, ZF, SF, OF, PF, AF. T rt ra kt lun v mc ch ca cc c ny. 0FFh + 01h 0FFh + 10h 40h + 55h 22h + 8Fh
Trang 8

GV: Phm Hng Kim Khnh

Ti liu thc hnh Vi x l

99h + 7Ch Bi 1.3: Thc hin lnh nhn gia 15h v 41h, 154h v 289Ah. Bi 1.4: Thc hin lnh chia gia 5623h v 14h, 3219154h v 9Ah. Bi 1.5: Thc hin lnh dch tri 1 bit, 2 bit, 3 bit gi tr 25h. Bi 1.6: Thc hin lnh quay tri 1 bit, 2 bit, 3 bit gi tr 25h. Bi 1.7: Thc hin lnh quay tri kt hp vi c carry 1 bit, 2 bit, 3 bit gi tr 25h. Bi 1.8: Thc hin lnh dch phi 1 bit, 2 bit, 3 bit gi tr 25h. Bi 1.9: Thc hin lnh quay phi 1 bit, 2 bit, 3 bit gi tr 25h. Bi 1.10: Thc hin lnh quay phi kt hp vi c carry 1 bit, 2 bit, 3 bit gi tr 25h. Bi 1.11: S dng lnh IN nhp d liu v lnh OUT xut d liu ra thit b ngoi vi c a ch 110. Ch thm vo chui #start=simple.exe# u chng trnh kim tra kt qu.

3.2. S dng ngt 21h v ngt 10h Bi 1.12: Dng hm 09h xut chui ra mn hnh: .model small .stack 100h .data msg db 'Hello$' .code main proc mov ax,@data mov ds,ax

mov ah,09h lea dx,msg int 21h exit: mov ah,4Ch int 21h main endp
GV: Phm Hng Kim Khnh

; Xut chui ra mn hnh

Trang 9

Ti liu thc hnh Vi x l

;----------End Bi 1.13: B du $ cui chui Hello, thc hin li chng trnh v nhn xt kt qu. Bi 1.14: Thc hin ging nh bi 1.12 nhng thc hin lin tc cho n khi nhn mt phm bt k trn bn phm th dng. Gi : dng hm 0Bh kim tra phm nhn, nu c nhn phm th kt thc chng trnh. mov ah,0Bh int 21h cmp al,00h jne exit ; Xut chui exit:

Bi 1.15: Xut chui Hello ra mn hnh ti hng 10, ct 10. Gi : dng hm 02h ca ngt 10h chuyn to trc khi xut chui. Bi 1.16: Nhp mt k t t bn phm v xut k t va nhp ra mn hnh ti hng 11, ct 10. .model small .stack 100h .data msg db 'Hello$' .code main proc mov ax,@data mov ds,ax

mov ah,08h int 21h

; Nhp k t t bn phm

GV: Phm Hng Kim Khnh

Trang 10

Ti liu thc hnh Vi x l

push ax mov ah,02h mov dx,0B0Ah int 10h pop ax

; Lu k t va nhp ; Chuyn to con tr

mov dl,al mov ah,02h int 21h

; Xut k t

mov ah,4Ch int 21h main endp ;----------End

Bi 1.17: Nhp mt k t t bn phm v xut ra mn hnh dng ch hoa. Gi : thm mt on chng trnh kim tra k t nhp, nu l k t ch thng th chuyn thnh ch hoa ri xut ta mn hnh. cmp al,'a' jb next cmp al,'z' ja next sub al,20h next: Bi 1.18: Nhp lin tc cc k t, xut ra mn hnh dng ch hoa v kt thc chng trnh khi nhn phm ESC. Gi : sau khi nhp th kim tra k t va nhp, nu l ESC th thot (m ASCII ca phm ESC l 27 hay 1Bh). cmp al,27 je exit
GV: Phm Hng Kim Khnh Trang 11

; Nu < a ; hay > z th khng phi l ; ch thng ; Chuyn t ch thng -> hoa

Ti liu thc hnh Vi x l

exit: mov ah,4Ch int 21h Bi 1.19: Dng hm 02h ca ngt 21h xut chui: .model small .stack 100h .data msg db 'Hello$' .code main proc mov ax,data mov ds,ax mov si,0 lap: mov dl,msg[si] cmp dl,'$' je exit mov ah,02h int 21h inc si jmp lap exit: mov ah,4Ch int 21h main endp end main

GV: Phm Hng Kim Khnh

Trang 12

Ti liu thc hnh Vi x l

Bi 1.20: Dng hm 02h ca ngt 21h xut chui Hello theo chiu thng ng bt u ti hng 1, ct 10. Gi : dng hm 02h ca ngt 10h di chuyn to con tr sau khi xut mt k t.
H e l l o

Bi 1.21: Xut chui Hello theo ng cho nh hnh v bt u ti hng 1, ct 1.


H e l l o

Bi 1.22: Xut chui Hello theo ng cho nh hnh v bt u ti hng 1, ct 40.


H e l l o

Bi 1.23: Di chuyn k t A theo chiu ngang t tri sang phi bt u ti hng 1, ct 1 v kt thc ti hng 1, ct 40. .model small .stack 100h .data .code main proc
GV: Phm Hng Kim Khnh Trang 13

Ti liu thc hnh Vi x l

mov ax,data mov ds,ax mov dh,1 mov dl,1 lap: mov ah,02h int 10h ; Gi hm 02h ca ngt 10h ; chuyn to ; Hng 1, ct 1

push dx mov dl,'A' mov ah,02h int 21h pop dx call delay mov ah,02h int 10h push dx mov dl,' ' mov ah,02h int 21h pop dx inc dl cmp dl,41 jne lap exit: mov ah,4Ch int 21h
GV: Phm Hng Kim Khnh Trang 14

; Gi hm 02h ca ngt 21h ; xut k t

; To thi gian tr

; Xut k t khong trng ; xo k t c

; Chuyn sang ct k ; n ct 41 th dng

Ti liu thc hnh Vi x l

main endp delay proc push cx mov cx,0fh loop $ pop cx ret delay endp end main Bi 1.24: Xo on chng trnh in m trong bi 1.23, thc thi chng trnh v kim tra kt qu. Bi 1.25: Thc hin chng trnh 1.23 nhng theo chiu thng ng t trn xung bt u ti hng 1, ct 1 v kt thc ti hng 15, ct 1. Bi 1.26: Thc hin chng trnh 1.23 nhng theo chiu ngang t phi sang tri bt u ti hng 1, ct 40 v kt thc ti hng 1, ct 1. Bi 1.27: Thc hin chng trnh 1.23 nhng theo chiu thng ng t di ln bt u ti hng 15, ct 1 v kt thc ti hng 15, ct 1. Bi 1.28: Thc hin chng trnh 1.23 nhng theo ng cho nh hnh v.
Hng 1, ct 1

Hng 15, ct 15

Bi 1.29: Thc hin chng trnh 1.23 nhng theo ng cho nh hnh v.
Hng 1, ct 1

Hng 15, ct 15

Bi 1.30: Thc hin chng trnh 1.23 nhng theo ng cho nh hnh v.
Hng 1, ct 15

Hng 15, ct 1 GV: Phm Hng Kim Khnh Trang 15

Ti liu thc hnh Vi x l

Bi 1.31: Thc hin chng trnh 1.23 nhng theo ng cho nh hnh v.
Hng 1, ct 15

Hng 15, ct 1

Bi 1.32: Thc hin chng trnh 1.23 nhng di chuyn k t nh hnh v, bt du ti hng 1, ct 1.
Hng 1, ct 1 Hng 1, ct 10

Hng 10, ct 1

Hng 10, ct 10

Hng 20, ct 1

Bi 1.33: Nhp mt chui t bn phm v xut chui ra mn hnh bng cch dng hm 02h ca ngt 21h. .model small .stack 10h .data msg db 101 db ? db 101 dup(?) .code main proc mov ax,@data mov ds,ax mov ah,0Ah lea dx,msg int 21h ; Hm 0Ah nhp chui ; DX cha a ch chui ; Chui c ti a 100 k t ; S k t thc t

GV: Phm Hng Kim Khnh

Trang 16

Ti liu thc hnh Vi x l

mov si,2 lap: mov dl,msg[si] cmp dl,13 je exit mov ah,02h int 21h inc si jmp lap exit: mov ah,4Ch int 21h main endp end main

; V tr lu k t nhp

; Phm Enter th kt thc

Bi 1.34: Thay gi tr ban u ca SI ti dng in m trong bi 1.33 bng gi tr 0, thc thi chng trnh v quan st kt qu. Bi 1.35: Nhp mt chui t bn phm v xut chui ra mn hnh bng cch dng hm 09h ca ngt 21h. Lu l hm 09h dng xut chui trong chui bt buc phi kt thc bng k t $ nn phi thm k t ny vo cui chui trc khi xut. .model small .stack 10h .data msg db 101 db ? db 101 dup(?) .code main proc mov ax,@data mov ds,ax

GV: Phm Hng Kim Khnh

Trang 17

Ti liu thc hnh Vi x l

mov ah,0Ah lea dx,msg int 21h mov si,1 mov al,msg[si] mov ah,0 mov si,ax mov al,'$' mov msg[si],al mov ah,09h lea dx,msg add dx,2 int 21h exit: mov ah,4Ch int 21h main endp end main Bi 1.36: B dng in m trong bi 1.35, thc thi chng trnh v quan st kt qu. Bi 1.37: Thc hin bi 1.32 nhng thay k t A bng chui LAP TRINH HOP NGU. Gi : Thay th hm 02h trong bi 1.32 bng hm 09h (thm k t $ vo cui chui). ; Gi hm 09h xut chui ; Kt qu cha vo SI ; Thm $ vo cui chui ; c s lng k t nhp

GV: Phm Hng Kim Khnh

Trang 18

You might also like