sub5.asm
来自「关于linux环境下的nasm代码的生成和使用」· 汇编 代码 · 共 59 行
ASM
59 行
;; file: sub5.asm; Subprogram to C interfacing example%include "asm_io.inc"; subroutine calc_sum; finds the sum of the integers 1 through n; Parameters:; n - what to sum up to (at [ebp + 8]); sump - pointer to int to store sum into (at [ebp + 12]); pseudo C code:; void calc_sum( int n, int * sump ); {; int i, sum = 0;; for( i=1; i <= n; i++ ); sum += i;; *sump = sum;; };; To assemble:; DJGPP: nasm -f coff sub5.asm; Borland: nasm -f obj sub5.asmsegment .text global calc_sum;; local variable:; sum at [ebp-4]calc_sum: enter 4,0 ; allocate room for sum on stack push ebx ; IMPORTANT! mov dword [ebp-4],0 ; sum = 0 dump_stack 1, 2, 4 ; print out stack from ebp-8 to ebp+16 mov ecx, 1 ; ecx is i in pseudocodefor_loop: cmp ecx, [ebp+8] ; cmp i and n jnle end_for ; if not i <= n, quit add [ebp-4], ecx ; sum += i inc ecx jmp short for_loopend_for: mov ebx, [ebp+12] ; ebx = sump mov eax, [ebp-4] ; eax = sum mov [ebx], eax pop ebx ; restore ebx leave ret
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?