Style/ru: Difference between revisions
mNo edit summary |
|||
Line 5: | Line 5: | ||
При написании процедур необходимо перед процедурой указывать входные, выходные параметры, так же указывать какие регистры изменяются. | При написании процедур необходимо перед процедурой указывать входные, выходные параметры, так же указывать какие регистры изменяются. | ||
<syntaxhighlight lang="asm"> ;in: eax = pointer | |||
; ebx = PID | ; ebx = PID | ||
;out: eax = return code in (0,-1) | ;out: eax = return code in (0,-1) | ||
;destroys eax | ;destroys eax | ||
;================================ | ;================================ | ||
subrutine: | subrutine:</syntaxhighlight> | ||
При написании процедур очень полезно комментировать их способом, показанным ниже. | При написании процедур очень полезно комментировать их способом, показанным ниже. | ||
Line 16: | Line 16: | ||
Тогда даже человек, только начинающий изучать ассемблер, сразу поймёт, что далает данная функция. И наоборот, даже самому опытному программисту может понадобится некторое время просто на понимание того, что делает данная функция. | Тогда даже человек, только начинающий изучать ассемблер, сразу поймёт, что далает данная функция. И наоборот, даже самому опытному программисту может понадобится некторое время просто на понимание того, что делает данная функция. | ||
<syntaxhighlight lang="asm"> ;----------------------------------------------------------------------------- | |||
proc key.ctrl_o ;///// ENTER OPEN FILENAME /////////////////////////////////// | proc key.ctrl_o ;///// ENTER OPEN FILENAME /////////////////////////////////// | ||
;----------------------------------------------------------------------------- | ;----------------------------------------------------------------------------- | ||
Line 22: | Line 22: | ||
... | ... | ||
... | ... | ||
endp | endp</syntaxhighlight> | ||
Если Вы вносите изменения или добавление в программу, неважно каких размеров, полезно как-то помечать добавленный код, попутно описывая, какую операцию он выполняет. Тогда потом никто не будет недоумевать "А это здесь откуда и что оно вообще делает?". | Если Вы вносите изменения или добавление в программу, неважно каких размеров, полезно как-то помечать добавленный код, попутно описывая, какую операцию он выполняет. Тогда потом никто не будет недоумевать "А это здесь откуда и что оно вообще делает?". | ||
Line 28: | Line 28: | ||
Делать это можно так, как показано ниже: | Делать это можно так, как показано ниже: | ||
<syntaxhighlight lang="asm"> ;// diamond [ (convert size from decimal representation to dword) | |||
;-- mov edx,dword[@PARAMS+1] | ;-- mov edx,dword[@PARAMS+1] | ||
mov esi,@PARAMS+1 | mov esi,@PARAMS+1 | ||
Line 40: | Line 40: | ||
jmp @b | jmp @b | ||
@@: | @@: | ||
;// diamond ] | ;// diamond ]</syntaxhighlight> | ||
[[Category:Кодинг]] | [[Category:Кодинг]] |
Revision as of 19:35, 31 July 2012
Стиль оформления
Рекомендации по оформлению кода.
При написании процедур необходимо перед процедурой указывать входные, выходные параметры, так же указывать какие регистры изменяются.
;in: eax = pointer
; ebx = PID
;out: eax = return code in (0,-1)
;destroys eax
;================================
subrutine:
При написании процедур очень полезно комментировать их способом, показанным ниже.
Тогда даже человек, только начинающий изучать ассемблер, сразу поймёт, что далает данная функция. И наоборот, даже самому опытному программисту может понадобится некторое время просто на понимание того, что делает данная функция.
;-----------------------------------------------------------------------------
proc key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
;-----------------------------------------------------------------------------
...
...
...
endp
Если Вы вносите изменения или добавление в программу, неважно каких размеров, полезно как-то помечать добавленный код, попутно описывая, какую операцию он выполняет. Тогда потом никто не будет недоумевать "А это здесь откуда и что оно вообще делает?".
Делать это можно так, как показано ниже:
;// diamond [ (convert size from decimal representation to dword)
;-- mov edx,dword[@PARAMS+1]
mov esi,@PARAMS+1
xor edx,edx
xor eax,eax
@@: lodsb
test al,al
jz @f
lea edx,[edx*4+edx]
lea edx,[edx*2+eax-'0']
jmp @b
@@:
;// diamond ]