锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
debug紼嬪簭寮濮嬫椂DS鎸囧悜鐨勬槸PSP鐨勫ご鍦板潃,鑰孋S=DS+10H
涓嶈兘灝嗕竴涓暟鍊肩洿鎺ラ佸叆孌靛瘎瀛樺櫒,瑕侀氳繃鍏跺畠瀵勫瓨鍣ㄨ繘琛屼紶閫?
(N/16+1)*16 鎰忔濇槸鎬誨彇澶?6涓瓧鑺傚瓨鏀懼鍑虹殑瀛楄妭.N+16涓嶇瓑浠峰乏杈圭殑寮忓瓙.
瀹冪瓑浠蜂簬(int(N/16)+1).
涓鑸潵璇?褰撴垜浠鏆傚瓨鏁版嵁鏃?閮藉簲璇ヤ嬌鐢ㄦ爤!
(1)鍙湁bx,si,di,bp鐢ㄥ湪[]閲岃繘琛屽唴鍦ㄥ崟鍏冪殑瀛樺彇.
(2)bx,si,di,bp鍙兘浠x涓巗i,bx涓巇i,bp涓巗i,bp涓巇i鍥涚緇勫悎鍑虹幇
褰㈠儚浜?
si
/
bx
\
di
si
/
bp
\
di
(3)鍙鍦╗]涓嬌鐢ㄥ瘎瀛樺櫒bp,鑰屾寚浠や腑娌℃湁鏄炬у湴緇欏嚭孌靛湴鍧,孌靛湴鍧灝遍粯璁ゅ湪ss涓?鍏跺畠鐨?nbsp; 鏄笉鏄粯璁ゅ瓨鏀懼湪ds涓?
鏁版嵁澶勭悊鐨勫垎綾?鍐欏叆,璇誨彇,榪愮畻!
鏁版嵁瀛樺湪鐨勪笁涓湴鏂?CPU鍐?鍐呭瓨,绔彛!
push鍙繘琛屽瓧鎿嶄綔,pop鍛?
鐢╠d瀹氫箟鐨勬暟鐨勫瓨鏀?濡?00001瀹冪殑鍗佸叚榪涘埗涓?86A1H,鍒欏畠鍦ㄥ唴瀛樼殑瀛樻斁褰㈠紡鏄?br>A1 86 01 00
鍒氬垰濂芥槸32浣?鍜屾垜浠殑閫昏緫000186A1涓嶄竴鏍?瑙勫緥:鍊掕繃鏉?.
鍦ㄤ竴涓暟鎹閲屽畾涔夌殑鏁版嵁鏄繛緇瓨鏀劇殑,浣嗚鐪嬫竻妤氬畠浠槸浠涔堢被鍨?dd,dw,db).
db '1634'閲岄潰涓涓瓧絎﹀崰涓涓瓧鑺?淇濆瓨鐨勬槸鐩稿簲鐨凙CSII鐮?
loop鎸囦護(hù)鏄厛鎶奀X瀵勫瓨鍣ㄧ殑鍊煎噺1鐒跺悗鍐嶅垽鏂槸鍚︽槸0
assume cs:code
code segment
mov ax,4c00H
int 21H
start: mov ax,0
s: nop
nop
mov di,offset s ;浠ヤ笅鍥涜澶嶅埗s2鐨勭涓鏉℃寚浠ょ粰s
mov si,offset s2 ;鍒氬垰濂借鐩栦簡s鐨勪袱鏉op鎸囦護(hù)
mov ax,cs:[si] ;澶嶅埗榪囧幓鐨勫唴瀹規(guī)槸:"鍚戝墠鎴栧悜鍚庣Щ鍔ㄥ灝?
mov cs:[di],ax
s0: jmp short s
s1: mov ax,0
int 21H
mov ax,0
s2: jmp short s1 ;鏈哄櫒鐮丒BF6;鎰忔濇槸"鍚戝墠縐誨姩10d涓瓧鑺?
nop
code ends
end start
;9D:0000 B8004C MOV AX,4C00
;9D:0003 CD21 INT 21
;9D:0005 B80000 MOV AX,0000
;9D:0008 EBF6 JMP 0000 EBF6澶嶅埗榪囨潵鍚庡墠縐?0涓瓧鑺傚嵆璺沖埌0000
;9D:000A BF0800 MOV DI,0008
;9D:000D BE2000 MOV SI,0020
;9D:0010 2E CS:
;9D:0011 8B04 MOV AX,[SI]
;9D:0013 2E CS:
;9D:0014 8905 MOV [DI],AX
;9D:0016 EBF0 JMP 0008
;9D:0018 B80000 MOV AX,0000
;9D:001B CD21 INT 21
;9D:001D B80000 MOV AX,0000
瀵筩all鎸囦護(hù)鐨勪竴浜涚悊瑙?
call word ptr 鍐呭瓨鍗曞厓鍦板潃
涔︿笂鐞嗚В:
push IP
jmp word ptr 鍐呭瓨鍗曞厓鍦板潃
鎴戠殑鐞嗚В:
(1)IP鐨勫煎厛鍙樻垚CALL鎸囦護(hù)鍚庣殑絎竴涓瓧鑺傜殑鍋忕Щ鍦板潃錛岀劧鍚庢墠琚帇鍏ユ爤;
(2)鍘嬪叆鍚庡啀鏀瑰彉I(yè)P鐨勫?鍗?IP)=鍐呭瓨鍗曞厓鍦板潃鐨勫?
call dword ptr 鍐呭瓨鍗曞厓鍦板潃
涔︿笂鐞嗚В:
push cs
push ip
jmp dword ptr 鍐呭瓨鍗曞厓鍦板潃
寮濮嬫槸灝嗘鏃剁殑CS,IP(IP搴旇鏄疌ALL鍛戒護(hù)鍚庣殑絎竴涓瓧鑺?鍘嬪叆鏍?CS鏄厛鍘嬪叆閽辯殑,
鐒跺悗璺沖埌鍐呭瓨鍗曞厓涓唴瀹規(guī)墍鎸囩殑鍦板潃,
鍗矯S=((鍐呭瓨鍗曞厓鍦板潃)+2),IP=(鍐呭瓨鍗曞厓)//鍏跺疄榪欎袱涓槸JMP鎸囦護(hù)鐨勭悊瑙?
瀵筙/N=int(H/N)*65536+(rem(H/N)*65536+L)/N鐨勭悊瑙?br>int(H/N)*65536姹傚嚭鐨勬槸楂?6浣嶇殑鍊?鍗?16浣嶇殑鍊?000
鍚庨潰16浣嶆槸浣?6浣嶇殑鍊?鍥犱負(fù)鍚庨潰鐨勫晢涓嶄細(xì)瓚呰繃16浣?姹傚嚭鐨勫晢灝辨槸浣?6鐨勫?鍔犲埌0000涓?br>鑰?rem(H/N)*65536+L)/N綆楀緱鐨勪綑鏁板氨鏄湰X/N鐨勪綑鏁?
娉ㄦ剰*65536鐨勫惈涔夋槸鍚戝乏縐誨灝戜綅,鍚庨潰鐨勮ˉ闆?
鍏堢畻16榪涘埗鍐嶇畻鍗佽繘鍒?
int鏄皢瀛愮▼搴忚鍏ュ唴鍦ㄥ厛,鐒跺悗閫氳繃浠e彿榪涜璋冪敤.(闈欐?
鑰宑all灝卞鍔ㄦ佹墽琛岃繖鏍?絳夊埌榪愯鏃舵墠瑁呭叆鍐呭瓨.(鍔ㄦ?
P246鐨勪腑鏂緥紼嬬殑鐞嗚В
lp:push bp ;姝ゆ椂鏍堥噷鐨勬儏鍐墊槸:bp ip cs 鏍囧織瀵勫瓨鍣?br> mov bp,sp
dec cx
jcxz lpret
add [bp+2],bx ;鍥犱負(fù)bp榛樿鐨勬瀵勫瓨鍣ㄦ槸ss,鏁呬嬌鐢ㄤ簡bp,鑰?2灝辨寚鍚戜簡ip鐨勫?
lpret:
pop bp
iret ;鐢眂x 鏉ュ喅瀹氭槸寰幆榪樻槸鍚戜笅緇х畫鎵ц,
緙栧啓涓柇渚嬬▼鐨勬鑱?
(1)鍏堝皢浠g爜澶嶅埗鍒版寚瀹氱殑浣嶇疆,娉ㄦ剰榪欓噷瑕佹寚鍑鴻澶嶅埗瀛楄妭鐨勯暱搴?br>(2)鍐嶆妸鎸囧畾鐨勪唬鐮佸瓨鏀句綅緗斁鍒板悜閲忚〃涓?鍥犱負(fù)鏄氳繃鍚戦噺琛ㄨ繘琛岃闂殑.
(3)浣犲彲浠ョ紪鍐欎綘鐨勪腑鏂緥紼嬩簡!璁板緱寮濮嬩笌緇撳熬鏍囧織!
鍦╥n涓巓ut鎸囦護(hù)涓?鍙兘浣跨敤ax鎴朼l鏉ュ瓨鏀句粠绔彛涓鍏ョ殑鏁版嵁鎴栬鍙戦佸埌绔彛涓殑鏁版嵁,璁塊棶8浣嶇鍙f椂鐢ˋL,璁塊棶16浣嶇鍙f椂瑕佺敤AX.
shl,shr鎸囦護(hù)縐諱綅澶氫簬涓浣嶆椂涓瀹氳灝嗙Щ鐨勪綅鏁版斁鍦╟l閲?
BCD鐮?浣嶇‘瀹氫竴涓暟,濡?6鐨凚CD鐮佷負(fù)0010 0110
7.8 宸茬煡瀵瑰簲浜庝腑鏂被鍨嬬爜涓?8H鐨勪腑鏂湇鍔$▼搴忓瓨鏀懼湪0020H錛?314H寮濮嬬殑鍐呭瓨鍖哄煙涓紝姹傚搴斾簬18H綾誨瀷鐮佺殑涓柇鍚戦噺瀛樻斁浣嶇疆鍜屽唴瀹廣?/p>
鍦ㄧ紪鍐欑▼搴忔椂錛屼負(fù)浠涔堥氬父鎬昏鐢⊿TI鍜孋LI涓柇鎸囦護(hù)鏉ヨ緗腑鏂厑璁告爣蹇楋紵8259A鐨勪腑鏂睆钄藉瘎瀛樺櫒IMR鍜屼腑鏂厑璁告爣蹇桰F鏈変粈涔堝尯鍒紵
銆愯В絳斻戝亸縐誨湴鍧EA=18H×4=60H錛?8H涓柇鍚戦噺鍦ㄤ腑鏂悜閲忚〃涓殑鍏ュ彛鍦板潃涓?0000H錛?0H=00060H銆備腑鏂湇鍔$▼搴忓瓨鏀懼湪0020H錛?314H寮濮嬬殑鍐呭瓨鍖哄煙涓紝鎵浠ワ紙00060H錛?0020H錛岋紙00061H錛? 6314H銆?/p>
IF鏄?086寰鐞嗗櫒鍐呴儴鏍囧織瀵勫瓨鍣‵lags鐨勪腑鏂厑璁告爣蹇椾綅銆傝嫢IF=1錛屽垯C(jī)PU鍙互鎺ュ彈涓柇璇鋒眰錛涜嫢IF=0錛?086灝變笉鎺ュ彈澶栭儴鍙睆钄戒腑鏂姹侷NTR寮曠嚎涓婄殑璇鋒眰淇″彿銆傚湪緙栧啓紼嬪簭鏃訛紝鐢⊿TI鎸囦護(hù)浣夸腑鏂厑璁告爣蹇椾綅IF=1錛岀洰鐨勬槸浣緾PU鑳藉鎺ュ彈涓柇璇鋒眰錛屾垨瀹炵幇涓柇宓屽銆傝岀敤CLI鎸囦護(hù)浣夸腑鏂厑璁告爣蹇椾綅IF=0錛屽垯鍙互鍏充腑鏂紝浣緾PU鎷掔粷鎺ュ彈澶栭儴涓柇璇鋒眰淇″彿銆?/p>
濡傛灉8259A鐨勪腑鏂睆钄藉瘎瀛樺櫒IMR涓殑鏌愪綅涓?錛屽氨鎶婅繖涓浣嶅搴旂殑涓柇璇鋒眰杈撳叆淇″彿IR灞忚斀鎺夛紝鏃犳硶琚?259A澶勭悊錛屼篃鏃犳硶鍚?086澶勭悊鍣ㄤ駭鐢烮NTR璇鋒眰銆?/p>
娉ㄦ剰:鍦ㄥ悗闈㈠姞鏈?:"鐨勫湴鍧鏍囧彿,鍙兘鍦ㄤ唬鐮佹涓嬌鐢?涓嶈兘鍦ㄥ叾浠栨涓嬌鐢?
$琛ㄧず鐨勬槸鏈鍦板潃,
$$鍒欒〃紺哄紑濮嬫眹緙栫殑鍦板潃.
2.3鎬葷粨:
鎵цmov鎸囦護(hù)涓嶆敼鍙楥S瀵勫瓨鍣?br>鎵цjmp 孌靛湴鍧:鍋忕Щ鍦板潃 鏀瑰彉CS鍜孖P
鎵цjmp 瀵勫瓨鍣?nbsp; 鍙敼鍙業(yè)P涓嶆敼鍙楥S
瀹為獙浜旀葷粨:
榪樻病鍔犺澆紼嬪簭鍓?
CS:IP鎸囧悜紼嬪簭孌電殑絎竴鏉℃寚浠?鏁匔S鍙互鐭ラ亾.
SS=CS-2
DS=SS-10H ;榪欎釜鐭ラ亾鏈夋病鏈夌敤?
鍔犺澆鍚?
SS=CS-1;
DS=CS-2;