In 和out 还是不懂
in 是写入端口out 是写出端口
那么端口是不是相当与地址?
外设都是从这同一地址获取数据的吗?
第68课:显示月份代码中
mov al,8 ;8是数据,
out 70h,al ;将8写入端口70h,不是地址?写入70h端口这行有什么用
in al,71h ;是将数据8写出端口到al寄存器中吗?这行有什么用
看完这节不懂,,求帮忙
显示 月份 代码
code segment
start:
mov al,8
out70h,al
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
.............................
本帖最后由 炒饭 于 2012-7-22 00:17 编辑
就这一端口,外设又怎么访问, 那么想多次读取,又是怎样的原理
70端口进去的数,怎样在71端口读取
看了资料后out 70h,al ;写入要访问的地址
in al,71h ;取出访问地址中的值
那么又有一问题,怎么往该地址中写入数据呢?
炒饭 发表于 2012-7-21 15:46 static/image/common/back.gif
就这一端口,外设又怎么访问, 那么想多次读取,又是怎样的原理
70端口进去的数,怎样在71端口读取
out 70h,al ;给70h端口地址
mov al,31h ;al放写入的数据
out 71h,al ;写入al,地址在70h那
(我也不很明白,in al,70h合法吗?) 端口70h用来存放地址单元,如8,
端口71h用来存放上面地址单元如8所对应的地址所存放的数据
这两个是配套的。
只要在端口70h给出了地址单元,则立马可以从端口71h中取出该地址单元对应的地址所存的数据
而端口的读写的话,都是用al
mov al,8 ;8号地址单元
out 70h,al ;将8写入端口70h,会自动算出相应的地址,如xxxx,
in al,71h ;取出地址xxxx所存放的一个字节数据到al中
mov al,0
out 71h,0 ;将0写入,即地址xxxx所对应的数据变为0
in al,71h ;然后读取出地址xxxx所存放的一个字节数据到al中
附检测点14.1assume cs:code
code segment
start:
mov bx,0b800h
mov es,bx
mov si,160*12+78
mov al,2
out 70h,al
in al,71h
mov byte ptr es:,al
mov byte ptr es:1,01110000b
mov al,0
out 71h,al
in al,71h
mov byte ptr es:2,al
mov byte ptr es:3,01110000b
mov ax,4c00h
int 21h
code ends
end start
页:
[1]