阿西吧 发表于 2017-7-18 11:40:26

汇编语言上天之路67-18(端口)

汇编语言上天之路67-18(端口)
        CPU可以从三个地方直接读写数据:
                1.CPU内部寄存器
                2.内存单元
                3.端口
       
        对端口只能用in(读取数据),out(写入数据)指令
       
        在in和out指令中,只能用ax(16位端口)或al(8位端口)来存放端口读入或要发送到端口中的数据
        0-255内的端口:
                in al,20h
                out 20h,al

        256-65535(端口号放在dx中):
                mov dx,3f8h
                in al,dx
                out dx,al
       
        CMOS RAM芯片:
        0-dh存放时间信息,两个端口,70h,71h,向70h写入地址信息,71h读出数据信息
       
        shl:逻辑左移命令(数据左移,将最后移出的一位写入CF中,移位用0填充)
                1.shl al,1
                则是将al二进制位像左移1(相当于x2)
               
                2.如果左移位数大于1,要用cl存放移动位数
       
        shl:逻辑右移命令(数据右移,将最后移出的一位写入CF中,移位用0填充)
                1.shl al,1
                则是将al二进制位像右移1(相当于÷2)
               
                2.如果右移位数大于1,要用cl存放移动位数
       

实验14:
        assume cs:code

stack segment
        db "      "        ;8字节的栈空间
stack ends

code segment
                start:
                        mov ax,stack
                        mov ss,ax
                        mov sp,8
                       
                        mov ah,0
                       
                        mov al,0
                        out 70h,al
                        in al,71h
                        push ax
                       
                        mov al,2
                        out 70h,al
                        in al,71h
                        push ax
                       
                        mov al,4
                        out 70h,al
                        in al,71h
                        push ax
                       
                        mov al,7
                        out 70h,al
                        in al,71h
                        push ax
                       
                        mov al,8
                        out 70h,al
                        in al,71h
                        push ax
                       
                        mov al,9
                        out 70h,al
                        in al,71h
                        push ax
                       
                        mov ax,0b800h
                        mov ds,ax
                        mov si,160*12+40*2
                        mov cx,6
                s:
                        mov bx,cx
                        pop ax
                        mov ah,al
                        mov cl,4
                        shr ah,cl
                        and al,00001111b
                       
                        add ah,30h
                        add al,30h
                       
                        mov byte ptr ,ah
                        mov byte ptr ,02h
                        mov byte ptr ,al
                        mov byte ptr ,02h
                        mov byte ptr ,20h

                        add si,6
                        mov cx,bx
                        loop s
                       
                        mov ax,4c00h
                        int 21h

code ends
end start
页: [1]
查看完整版本: 汇编语言上天之路67-18(端口)