十八、数据容器、数据访问宽度、端口(计算机对数据处理方式:读取、写入、运算;数据可存放三个地方:CPU内部、内存、端口)
1. 數據容器
計算機的基本功能是對數據進行處理,處理的方式有:讀取、寫入、運算。
所處理的數據可以存在于三個地方:CPU內部、內存、端口。
?
匯編代碼中表達數據的位置方式:
a 立即數?? ??? ?直接包含在機器指令中的數據。? ?(內存)
mov ax,1122H mov bx,3344Hb 寄存器?? ??? ?指令要處理的數據在寄存器中。? (CPU內部,否則不固定)
mov cx,ax mov dx,bxc 段地址和偏移地址?? ?指令要處理的數據在內存中,通過內存尋址訪問到。? (內存)
直接尋址:[偏移地址] 寄存器間接尋址:[基址寄存器/變址寄存器] 寄存器相對尋址:[基址寄存器/變址寄存器+偏移量值] 基址變址尋址:[基址寄存器+變址寄存器] 相對基址變址尋址:[基址寄存器+變址寄存器+偏移量值]?
1. CPU內部
實例:
mov ax,bx?
2. 內存:5種尋址方式
直接尋址:[偏移地址]
寄存器間接尋址:[基址寄存器/變址寄存器]
寄存器相對尋址:[基址寄存器/變址寄存器+偏移量值]
基址變址尋址:[基址寄存器+變址寄存器]
相對基址變址尋址:[基址寄存器+變址寄存器+偏移量值]
?
3. 端口(寫驅動)
各種計算機外設硬件可以借助端口來完成與計算機CPU之間的通信控制。
計算機對這些端口統一編號,每個端口都會對應一個地址,地址編號范圍為0000H ~ 0FFFFH。
IN AL/AX 端口地址?? ?讀出數據
OUT 端口地址 AL/AX?? ?寫入數據
a 端口地址必須是立即數或DX寄存器。(立即數,比如:10H、11H、22H)
b 訪問8位端口時,用AL寄存器;訪問16位端口時,用AX寄存器。
例如:顯卡、聲卡、網卡
某一種硬件可能會同時占用多個端口
?
2. 數據訪問寬度
匯編指令可以處理兩種尺寸的數據,byte(字節)和word(字)。
a 通過寄存器名指明要處理的數據尺寸?
assume cs:code,ds:data data segment data endsstack segment stack endscode segment start:mov ax,20Hmov cx,ds:[10H] ;出現寄存器,16位mov [10H],bx ;出現寄存器,16位mov al,20H ;出現寄存器,8位mov al,bl ;出現寄存器,8位mov al,[10H] ;出現寄存器,8位mov [10H],al ;出現寄存器,8位mov ax,4c00Hint 21H code ends end startb 在沒有寄存器名存在的情況下,用操作符word ptr 或byte ptr 指明內存單元的長度。
assume cs:code,ds:data data segment data endsstack segment stack endscode segment start:mov word ptr [10H],0001H ;word ptr為16位inc word ptr [bx]inc word ptr [10H]add word ptr [bx],0002Hmov byte ptr [10H],01H ;byte ptr為8位inc byte ptr [bx]inc byte ptr [10H]add byte ptr [bx],02Hmov ax,4c00Hint 21H code ends end startc?有的匯編指令默認有訪問的數據寬度(永遠16位)
push [1000H] ;永遠16位 pop [2000H] ;永遠16位?
總結
以上是生活随笔為你收集整理的十八、数据容器、数据访问宽度、端口(计算机对数据处理方式:读取、写入、运算;数据可存放三个地方:CPU内部、内存、端口)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASSIC标准表
- 下一篇: Qt:Qt使用WM_COPYDATA消息