下面**在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.變數定義的格式變數名 偽指令助記符 變數初值表變數名 變數名...