組合語言定義延時巨集

2021-08-19 23:41:51 字數 990 閱讀 2751

下面**在masm上利用延時巨集實現迴圈輸出00~99數字,程式執行時如果按下esc鍵可終止輸出結束程序。 

delay macro time        ;延時巨集

local p1,p2

pusha

mov dx,time

mov ah,1 ;不等待

int 16h

jz p1 ;沒有輸入zf=1

cmp ah,1 ;esc的掃瞄碼1h

jz exit

p1:mov cx,0ffffh

p2:loop p2

dec dx

jnz p1

popa

endm

codes segment

assume cs:codes,ds:datas,ss:stacks

start:

mov ax,datas

mov ds,ax

;此處輸入**段**

mov ch,0

shiwei:

mov cl,0

gewei:

mov dl,ch

add dl,30h

mov ah,02h

int 21h

mov dl,cl

add dl,30h

mov ah,02h

int 21h

mov dl,20h; 輸出空格

mov ah,02h

int 21h

delay 10 ;呼叫延時巨集

inc cl

cmp cl,9

jle gewei

inc ch

cmp ch,9

jle shiwei

exit:

mov ah,4ch

int 21h

codes ends

end start

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

abs int 巨集定義 組合語言第七章答案

rept 7 store i i i 1 endm 7.11 試編寫一段程式完成以下功能,如給定名為x的字串長度大於5時,下列指令將彙編10次。add ax,ax 答 程式段如下 x db abcdefg if x gt 5 rept 10 add ax,ax endm endif 答 巨集定義如下...

組合語言 變數的定義

1.什麼是變數 variable 變數可以隨著程式的執行發生變化的量,儲存在主存空間中,變數需要事先定義才能使用,變數本質上就是主存單元裡的資料,主存是可讀可寫的,所以變數可以發生改變。變數有別於常量,常量是寫在指令裡的,不佔主存空間。2.變數定義的格式變數名 偽指令助記符 變數初值表變數名 變數名...