十一、伪指令、数据类型、操作符
偽指令:指給編譯器用,告訴編譯器如何執行匯編代碼。
?
1 段定義偽指令
功能:定義一個段,segment指明段的開始,ends指明段的結束。
語法:
段名字 segment 。 。 。 段名字 ends實例
daima segmentmov ax,1234Hmov ax,4c00H daima endsshuju segment放一些數據 shuju ends?
2 段關聯偽指令
功能:將源代碼中的某一個自定義的段與計算機中某一個段寄存器相關聯。
語法:
assume 段寄存器:自定義名稱,。。。,段寄存器:自定義名稱?
3 編譯結束偽指令
功能:告訴編譯器,編譯到此為止。
語法:
end?
匯總實例:
assume cs:daima daima segmentmov ax,1234Hmov ax,4c00H daima ends end?
4. 偽指令db、dw、dd
db 數據,數據,...,數據?? ?//偽操作用來定義字節(byte)數據,其后的每個操作數都占有一個字節(8位)。
dw 數據,數據,...,數據?? ?//偽操作用來定義字(word),其后的每個操作數都占有一個字(16位,遵循高存高地址,低存低地址原則)。
dd 數據,數據,...,數據?? ?//偽操作用來定義雙字(double word),其后的每個操作數占有一個雙字。
實例:
assume cs:code,ds:data data segmentdb 11H,22H,33H ;1個字節dw 0AABBH,0CCDDH ;2個字節dd 1H,2H,3H ;4個字節 data endsstack segment stack endscode segment start:mov ax,datamov ds,axmov ax,4c00Hint 21H code ends end start乘法實例:
8位乘數時,被乘數在AL內,乘積將存儲在AX內。
16位乘數時,被乘數在AX內,乘積在DX,AX內,遵循高存高,低存低原則。(DX存放高位,AX存放低位)
;8位乘法 assume cs:code,ds:data data segmentdb 03H,04Hdw 0FFH data endsstack segment stack endscode segment start:mov ax,datamov ds,axmov al,ds:[0]mov ah,ds:[1]mul ahmov ds:[2],axmov ax,4c00Hint 21H code ends end start除法實例:
8位除數時,被除數在AX內,商在AL內,余數在AH內。
16位除數時,被除數在DX和AX內,商在AX內,余數在DX內。(DX存放高位,AX存放低位)
;16位除法 assume cs:code,ds:data data segmentdd 00015F99Hdw 0384H,0H,0Hdb 0FFH data endsstack segment stack endscode segment start:mov ax,datamov ds,axmov dx,ds:[2]mov ax,ds:[0]mov bx.ds:[4]div bx;div word ptrbx ds:[4]mov ds:[6],axmov ds:[8],dxmov ax,4c00Hint 21H code ends end start?
5. 操作符dup
作用:定義重復數據。
使用格式:
db 重復次數 dup? (字節型數據)
dw 重復次數 dup (字型數據)
dd 重復次數 dup?(雙字數據)
實例:
assume cs:code,ds:data data segmentdb 11H,22H,33Hdb 6 dup (12H,13H) ;1個字節dw 3 dup (1122H,3344H) ;2個字節(1個字)dd 7 dup (11223344H,55667788H) ;4個字節(2個字)db 100 dup (00H)db 0FFH data endsstack segment stack endscode segment start:mov ax,datamov ds,axmov ax,4c00Hint 21H code ends end start?
6. 操作符OFFSET
作用:取得標號的偏移地址。(自己感覺是獲取標號的地址,實例為將標號復制到寄存器內使用,做輔助代碼,像遞歸)
實例:
;很像遞歸,這段代碼為 mov ax,bx的代碼復制重復調用 assume cs:code,ds:data data segment data endsstack segment stack endscode segment start:mov ax,bxmov si,offset s0mov di,offset startmov cx,cs:[di]mov cs:[si],cxs0:db 6 (0FFH)db 0EEHmov ax,4c00Hint 21H code ends end start?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的十一、伪指令、数据类型、操作符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT5_虚拟键盘
- 下一篇: (九)演员-评论员算法