版權聲明:本文為 gfson
原創(chuàng)文章得封,轉載請注明出處刚盈。
注:作者水平有限,文中如有不恰當之處鹤竭,請予以指正踊餐,萬分感謝。
14.1 概述
14.2 in 和 out
- 端口的讀寫指令只有 in 和 out臀稚,分別用于從端口讀取數據和往端口寫入數據吝岭。
- 在 in 和 out 指令中,只能用 ax 或 al 存放從端口中讀入的數據或要發(fā)送到端口中的數據吧寺。
- 訪問 8 位端口時用 al苍碟,訪問 16 位端口時用 ax。
14.3 檢測點 14.1
- 答案:
(1)
mov al, 2
out 70h, 2
in al, 71h
(2)
mov al, 2
out 70h, 2
mov al, 0
out 71h, al
14.4 shl 和 shr 指令
- shl 是邏輯左移指令撮执。
- shr 是邏輯右移指令微峰。
14.5 檢測點 14.2
- 答案:
mov bx, ax
shl ax, 1
mov cl, 3
shl bx, cx
add ax, bx
14.6 實驗 14
- 答案:
assume cs:code, ds:data
data segment
s db 9, 8, 7, 4, 2, 0
data ends
code segment
start: mov ax, 0b800h
mov es, ax
mov di, 160 * 12
mov ax, data
mov ds, ax
mov si, 0
mov cx, 6
print: mov al, s[si]
out 70h, al
in al, 71h
call number
cmp si, 2
jb slash
je space
cmp si, 5
jb colon
next: inc si
loop print
mov ax, 4c00h
int 21h
;al->number, es:di->begin
number: push cx
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30h
add al, 30h
mov byte ptr es:[di], ah
mov byte ptr es:[di + 2], al
add di, 4
pop cx
ret
slash: mov byte ptr es:[di], '\'
add di, 2
jmp next
colon: mov byte ptr es:[di], ':'
add di, 2
jmp next
space: mov byte ptr es:[di], ' '
add di, 2
jmp next
code ends
end start