- 积分
- 213
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
发表于 2005-10-10 17:22:02
|
显示全部楼层
Memory Viewer BIN文件源码:
#name MMV. Memory Viewer
;------------------------------
#define mmv_7fff 0b85262h
#define mmvPtr 37h:3500h
#define mmvID mmvPtr+6
#define mmv_textID1 13BAh
#define mmv_textID2 13BBh
base 20h:0
org 20h:0
mmv_main:
mov r12, #pof(mmv_7fff)
mov r13, #pag(mmv_7fff)
calls dspAlert
mov r4, #mmv_textID1
callr mmv_setTextID
mmv_dispMem:
mov [-r0], r9
mov [-r0], r8
mov [-r0], r7
mov [-r0], r6
sub r0, #200h
mov r8, r0
mov [-r0], r8
callr mmv_getTextID
mov r13, #0
calls resetTextID
callr mmv_getTextID
add r12, #2
mov r13, #0
calls resetTextID
mov r4, #'Me'
callr mmv_storeW
mov r4, #'m '
callr mmv_storeW
mov r4, #pof(mmvPtr)
extp #pag(mmvPtr), #3
mov r7, [r4+]
mov r9, [r4+]
mov r6, [r4+]
jmpr cc_Z, mmv_pos02 ; 0000:0000
cmp r6, #4
jmpr cc_ULT, mmv_posOK
add r6, #1
cmp r6, #7
jmpr cc_UGT, mmv_pos02
mmv_posOK:
add r6, r8
; add r6, #1
mmv_pos02:
and r9, #3FFh
and r7, #3FFCh
mov [-r0], r7
mov r7, r9
callr mmv_hex4
movb rl4, #':'
callr mmv_store1
mov r7, [r0+]
callr mmv_hex4 ; .0000:0000 (1)
movb rl4, #0
callr mmv_store1
mov r6, #0
callr mmv_getTextID
add r12, #2
mov r13, [r0]
and r13, #3FFFh
mov r14, DPP1
mov r15, #0
calls convText2ID
mov r8, [r0]
mov r5, #6
mmv_loop1:
cmp r7, #4000h
jmpr cc_UGE, mmv_dend
callr mmv_hex4
movb rl4, #':'
callr mmv_store1
mov r1, #4
mmv_loop2:
movb rl4, #' '
callr mmv_store1
extp r9, #1
movb rl4, [r7+]
callr mmv_hexDig
sub r1, #1
jmpr cc_NZ, mmv_loop2
movb rl4, #13
callr mmv_store1
sub r5, #1
jmpr cc_NZ, mmv_loop1
mmv_dend:
movb rl4, #0
callr mmv_store1
callr mmv_getTextID
mov r13, [r0+]
and r13, #3FFFh
mov r14, DPP1
mov r15, #0
calls convText2ID
callr mmv_getTextID
mov r14, #pof(mmv_TextList1)
mov r5, #pof(mmv_WndClass1)
cmp r12, #mmv_textID1
jmpr cc_Z, mmv_t02
add r14, #pof(mmv_TextList2)-pof(mmv_textList1)
mov r5, #pof(mmv_WndClass2)
mmv_t02:
xor r12, #mmv_textID1^mmv_textID2
mov r4, r12
callr mmv_setTextID
mov r13, #pag(mmv_WndClass1)
mov [-r0], r13
mov [-r0], r14
mov r12, r5
calls dspAlert00
mov r4, #0ah
add r0, #200h
mov r6, [r0+]
mov r7, [r0+]
mov r8, [r0+]
mov r9, [r0+]
rets
mmv_setTextID:
extp #pag(mmvPtr), #1
mov pof(mmvID), r4
ret
mmv_getTextID:
extp #pag(mmvPtr), #1
mov r12, pof(mmvID)
ret
mmv_storeW:
callr mmv_store1
movb rl4, rh4
jmpr cc_UC, mmv_store1
mmv_hex4:
movb rl4, rh7
callr mmv_hexDig
movb rl4, rl7
mmv_hexDig:
movb rl3, rl4
shr r4, #4
callr mmv_puthex1
movb rl4, rl3
callr mmv_puthex1
ret
mmv_puthex1:
andb rl4, #0Fh
addb rl4, #'0'
cmpb rl4, #'9'
jmpr cc_ULE, mmv_store1
addb rl4, #7
mmv_store1:
cmp r8, r6
jmpr cc_NZ, mmv_st02
movb rh4, #'<'
movb [r8], rh4
movb [r8+#1], rl4
movb rl4, #'>'
add r8, #2
mmv_st02:
movb [r8], rl4
add r8, #1
ret
mmv_keyHdl:
mov r1, #pof(mmvPtr)
extp #pag(mmvPtr), #3
mov r2, [r1+]
mov r3, [r1+]
mov r5, [r1+] ; 0000:0000 (0)
cmp r5, #6
jmpr cc_ULE, mmv_a01
mov r5, #0
mmv_a01:
shl r5, #1
extp #pag(mmvAdd), #1
mov r1, [r5+#pof(mmvAdd)]
shr r5, #1
cmp r14, #19h ; NEXT
jmpr cc_Z, mmv_process
cmp r14, #18h ; PREV
jmpr cc_NZ, mmv_test1
neg r1
mmv_process:
cmp r5, #1
jmpr cc_ULT, mmv_r2p
cmp r5, #3
jmpr cc_UGT, mmv_r2p
add r3, r1
cmp r3, #3FFh
jmpr cc_SLE, mmv_r3t1
mov r3, #0
mmv_ok1:
mov r4, #pof(mmvPtr)+6
extp #pag(mmvPtr), #3
mov [-r4], r5
mov [-r4], r3
mov [-r4], r2
jmps mmv_dispMem
mmv_r3t1:
cmp r3, #0
jmpr cc_SGE, mmv_ok1
mov r3, #3FFh
jmpr cc_UC, mmv_ok1
mmv_r2p:
add r2, r1
cmp r2, #4000h
jmpr cc_SLT, mmv_r2t1
mov r2, #0
jmpr cc_UC, mmv_ok1
mmv_r2t1:
cmp r2, #0
jmpr cc_SGE, mmv_ok1
and r2, #3FFFh
jmpr cc_UC, mmv_ok1
mmv_test1:
cmp r14, #0ah ; EXIT
jmpr cc_NZ, mmv_test2
jmps doIDLE
mmv_test2:
cmp r14, #14h ; LEFT
jmpr cc_NZ, mmv_test3
sub r5, #1
jmpr cc_SGE, mmv_ok1
mov r5, #6
jmpr cc_UC, mmv_ok1
mmv_test3:
cmp r14, #17h ; RIGHT
jmpr cc_NZ, mmv_test4
add r5, #1
cmp r5, #6
jmpr cc_ULE, mmv_ok1
mov r5, #0
jmpr cc_UC, mmv_ok1
mmv_test4:
mmv_exit:
mov r5, #370ch
extp #37h, #4
mov [-r5], r15
mov [-r5], r14
mov [-r5], r13
mov [-r5], r12
extp #37h, #2
mov [-r5], r9
mov [-r5], r8
mmv_rets:
mov r4, r14
rets
mmvAdd:
dw 24,100h,10h,1h,1000h,100h,10h
mmv_sKeyList:
dw 18h,18h,0ffffh ;761h;
dw 30h,32h,0ffffh
dw 31h,33h,0ffffh
dw 19h,19h,0ffffh ;531h
mmv_TextList1:
dw mmv_textID1, 7fffh
mmv_TextList2:
dw mmv_textID2, 7fffh
mmv_WndClass1:
dw 4000h ; Flag1 47c2
dw 0 ; Flag2 6
dw 22h ; Flag3 2=without lines
dw 0 ; TimeToKeep
dw 0 ; unknown
dw mmv_textID1+2 ; DialogTitle
dw 0,0 ; Handle1
dw ofs(mmv_keyHdl), seg(mmv_keyHdl) ; keyHandle
dw 0,0 ; Handle3
dw pof(mmv_SKeyList),pag(mmv_SKeyList) ; ButtondefOffset
dw 0 ; 2=center
dw 0 ; dunno
mmv_WndClass2:
dw 4000h ; Flag1 47c2
dw 0 ; Flag2 6
dw 22h ; Flag3 2=without lines
dw 0 ; TimeToKeep
dw 0 ; unknown
dw mmv_textID2+2 ; DialogTitle
dw 0,0 ; Handle1
dw ofs(mmv_keyHdl), seg(mmv_keyHdl) ; keyHandle
dw 0,0 ; Handle3
dw pof(mmv_SKeyList),pag(mmv_SKeyList) ; ButtondefOffset
dw 0 ; 2=center
dw 0 ; dunno |
|