十一、伪指令、数据类型、操作符
偽指令:指給編譯器用,告訴編譯器如何執(zhí)行匯編代碼。
?
1 段定義偽指令
功能:定義一個(gè)段,segment指明段的開始,ends指明段的結(jié)束。
語法:
段名字 segment 。 。 。 段名字 ends實(shí)例
daima segmentmov ax,1234Hmov ax,4c00H daima endsshuju segment放一些數(shù)據(jù) shuju ends?
2 段關(guān)聯(lián)偽指令
功能:將源代碼中的某一個(gè)自定義的段與計(jì)算機(jī)中某一個(gè)段寄存器相關(guān)聯(lián)。
語法:
assume 段寄存器:自定義名稱,。。。,段寄存器:自定義名稱?
3 編譯結(jié)束偽指令
功能:告訴編譯器,編譯到此為止。
語法:
end?
匯總實(shí)例:
assume cs:daima daima segmentmov ax,1234Hmov ax,4c00H daima ends end?
4. 偽指令db、dw、dd
db 數(shù)據(jù),數(shù)據(jù),...,數(shù)據(jù)?? ?//偽操作用來定義字節(jié)(byte)數(shù)據(jù),其后的每個(gè)操作數(shù)都占有一個(gè)字節(jié)(8位)。
dw 數(shù)據(jù),數(shù)據(jù),...,數(shù)據(jù)?? ?//偽操作用來定義字(word),其后的每個(gè)操作數(shù)都占有一個(gè)字(16位,遵循高存高地址,低存低地址原則)。
dd 數(shù)據(jù),數(shù)據(jù),...,數(shù)據(jù)?? ?//偽操作用來定義雙字(double word),其后的每個(gè)操作數(shù)占有一個(gè)雙字。
實(shí)例:
assume cs:code,ds:data data segmentdb 11H,22H,33H ;1個(gè)字節(jié)dw 0AABBH,0CCDDH ;2個(gè)字節(jié)dd 1H,2H,3H ;4個(gè)字節(jié) data endsstack segment stack endscode segment start:mov ax,datamov ds,axmov ax,4c00Hint 21H code ends end start乘法實(shí)例:
8位乘數(shù)時(shí),被乘數(shù)在AL內(nèi),乘積將存儲(chǔ)在AX內(nèi)。
16位乘數(shù)時(shí),被乘數(shù)在AX內(nèi),乘積在DX,AX內(nèi),遵循高存高,低存低原則。(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除法實(shí)例:
8位除數(shù)時(shí),被除數(shù)在AX內(nèi),商在AL內(nèi),余數(shù)在AH內(nèi)。
16位除數(shù)時(shí),被除數(shù)在DX和AX內(nèi),商在AX內(nèi),余數(shù)在DX內(nèi)。(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
作用:定義重復(fù)數(shù)據(jù)。
使用格式:
db 重復(fù)次數(shù) dup? (字節(jié)型數(shù)據(jù))
dw 重復(fù)次數(shù) dup (字型數(shù)據(jù))
dd 重復(fù)次數(shù) dup?(雙字?jǐn)?shù)據(jù))
實(shí)例:
assume cs:code,ds:data data segmentdb 11H,22H,33Hdb 6 dup (12H,13H) ;1個(gè)字節(jié)dw 3 dup (1122H,3344H) ;2個(gè)字節(jié)(1個(gè)字)dd 7 dup (11223344H,55667788H) ;4個(gè)字節(jié)(2個(gè)字)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
作用:取得標(biāo)號(hào)的偏移地址。(自己感覺是獲取標(biāo)號(hào)的地址,實(shí)例為將標(biāo)號(hào)復(fù)制到寄存器內(nèi)使用,做輔助代碼,像遞歸)
實(shí)例:
;很像遞歸,這段代碼為 mov ax,bx的代碼復(fù)制重復(fù)調(diào)用 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?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的十一、伪指令、数据类型、操作符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT5_虚拟键盘
- 下一篇: (九)演员-评论员算法