⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sub1.asm

📁 关于linux环境下的nasm代码的生成和使用
💻 ASM
字号:
;; file: sub1.asm; Subprogram example program;; To create executable:; Using djgpp:; nasm -f coff sub1.asm; gcc -o sub1 sub1.o driver.c asm_io.o;%include "asm_io.inc"segment .dataprompt1 db    "Enter a number: ", 0       ; don't forget nul terminatorprompt2 db    "Enter another number: ", 0outmsg1 db    "You entered ", 0outmsg2 db    " and ", 0outmsg3 db    ", the sum of these is ", 0segment .bss;; These labels refer to double words used to store the inputs;input1  resd 1input2  resd 1 segment .text        global  asm_mainasm_main:        enter   0,0               ; setup routine        pusha        mov     eax, prompt1      ; print out prompt        call    print_string        mov     ebx, input1       ; store address of input1 into ebx        mov     ecx, ret1         ; store return address into ecx        jmp     short get_int     ; read integerret1:        mov     eax, prompt2      ; print out prompt        call    print_string        mov     ebx, input2        mov     ecx, $ + 7        ; ecx = this address + 7        jmp     short get_int        mov     eax, [input1]     ; eax = dword at input1        add     eax, [input2]     ; eax += dword at input2        mov     ebx, eax          ; ebx = eax;; next print out result message as series of steps;        mov     eax, outmsg1        call    print_string      ; print out first message        mov     eax, [input1]             call    print_int         ; print out input1        mov     eax, outmsg2        call    print_string      ; print out second message        mov     eax, [input2]        call    print_int         ; print out input2        mov     eax, outmsg3        call    print_string      ; print out third message        mov     eax, ebx        call    print_int         ; print out sum (ebx)        call    print_nl          ; print new-line        popa        mov     eax, 0            ; return back to C        leave                             ret;; subprogram get_int; Parameters:;   ebx - address of dword to store integer into;   ecx - address of instruction to return to; Notes:;   value of eax is destroyedget_int:        call    read_int        mov     [ebx], eax         ; store input into memory        jmp     ecx                ; jump back to caller

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -