ͨʱݵijһλݵżУλаУλڵġ1ĸΪУ飻ΪżżУ顣
зIJӰ鲻ͬı־״̬λжзĴСϵҪòͬı־λϣжӦָ
˫֧ṹ֧֮JMPָʵֽǰһ֧صͬijá ӳעͿɷԱøӳӳעͰӳӳܡڲͳڲע˵ȡ
ӳֶջƽ⣬ִܱ֤RETָʱǰջȷķصַҲҪֶջƽ⣬ͷŴݲռõĶջռ䣬εøӳܾʹջ
ֵǴݲһóıӰóַʱóַͨõıݡ
INCLUDEıļԴļһ֣INCLUDELIBӳļ
ȡ̡
WindowsʱҪĶ̬ӿDLLļûбʱͻʾڡ
ϰ4.3
1JMPָĿַתƷΧѰַʽԷֳͣתơ__________תơ__________Ͷμתơ__________μתơ__________
2ƽչ洢ģ£EBX1256H˫ֱTABLEƫƵַ20A1HԵַ32F7H3280HִָJMP EBX EIP__________ִָJMP TABLE[EBX]EIP__________
3CMP EAX,3721Hָ֮JZָתƵEAX__________ʱZF__________
4СдĸeӢĵгƵߵĸijӢĵ4-11мܣͳƷֽݡ8FH࣬жϸóõֽ__________
5ѭṹһɣ__________ѭ__________֡
64-14еRETָPOP EBPָJMP EBPָ滻ʱEBP__________
7̶忪ʼǡTEST PROC䣬̶__________궨忪ʼǡDISP MACRO䣬궨__________
8öջӳķǹ̶ģѰַջݵļĴ__________ 9MASMУһõıӦʹ__________αָʹⲿҪʹ__________αָ
10ReadConsoleʱûڼϰ8Ȼس̻__________
ѰַѰֱַѰַѰַ 1256H3280H 3721H1 EAH
ѭʼѭ REPT1ŵĵַ TEST ENDPENDM EBP
PUBLICEXTERN 38H 0DH 0AH ϰ4.6
ִ³ƬϺCMPֱָʹ5״̬־CFZFSFOFPFΪ0Ϊ1ʹЩתָָJccתƣ mov eax,20h
cmp eax,80h
CF1 ZF0 SF1 OF0 PF1
ʹתƵָУJC JS JP JNZ JNO ϰ4.9
ָCDQEAXչEDXEAXΪ0EDX0EAXΪ1EDXFFFFFFFFHʵָָܡ 1 test eax,8000h jz next1 mov edx,0ffffffffh jmp done next1: mov dx,0 done:
2
ʹλָá rol eax,1 rcr edx,1 sar edx,31 ror eax,1
ϰ4.11дһʾ֡Input Number09Ȼһʾ֣Ǽ09֣ʾError!ȴ֡ ; ݶ inmsg byte 'Input number(0~9): ',0 ermsg byte 0dh,0ah,'Error! Input again: ',0 ; mov eax,offset inmsg ; ʾ call dispmsg again: call readc ; ȴ cmp al,'0' ; < 0 jb erdisp cmp al,'9' ; > 9 ja erdisp call dispcrlf call dispc jmp done
erdisp: mov eax,offset ermsg call dispmsg jmp again done:
ϰ4.12һַΪARRAY20˫ֵ飬˵гεĹܡ
sumlp:
mov ecx,20 mov eax,0 mov esi,eax
add eax,array[esi]
; λ
; λΪ0ZF1תƵNEXT1
; λΪ1˳ִУEDXFFFFFFFFH ; תƣһ֧
; λΪ0תƵִУEDX0
add esi,4 loop sumlp mov total,eax
20˫ֵĺͣTOTALؽĽλ
ϰ4.22дһӳԶʽʾEAX32λݣһ֤ ; Σ mov eax,8F98FF00H call dispbd ; Σӳ dispbd proc push ecx push edx mov ecx,32 dbd: rol eax,1 push eax and al,01h add al,30h call dispc pop eax loop dbd pop edx pop ecx ret dispbd endp ϰ4.26
3ӳһ32λ8λʮʽĻʾֱ3ֲݷ3֤
1EAXĴ32λ 2temp32λ 3öջ32λ
1 ; ݶ wvar word 307281AFH ; Σ mov eax,wvar call disp mov al,'H' call dispc ; Σӳ disp proc push ebx push ecx mov ecx,8 ; 8λ dhw1: rol eax,4 mov ebx,eax and al,0fh ; תΪASCII
; ӳ
; 32λ
; Ҫַ
; ALѭһλ ; ȡALλ
; תӦASCLLֵ ; ԶƵʽʾ
add al,30h cmp al,'9' jbe dhw2 add al,7 dhw2: call dispc mov eax,ebx loop dhw1 pop ecx pop ebx ret disp endp
2 ; ݶ wvar word 307281AFH temp word ? ; Σ mov eax,wvar mov temp,eax call disp mov al,'H' call dispc ; Σӳdisp proc push ebx push ecx mov ecx,8 mov eax,temp dhw1: rol eax,4 mov ebx,eax and al,0fh add al,30h cmp al,'9' jbe dhw2 add al,7 dhw2: call dispc ; mov eax,ebx loop dhw1 pop ecx pop ebx ret disp endp
3 ; ݶ wvar word 307281AFH ; Σ push wvar call disp add esp,4 mov al,'H'
; 8λ ; תΪASCIIʾһַ