在Assembly中调用printf时出错

时间:2017-09-25 01:01:01

标签: visual-studio assembly printf

我在大学的汇编语言课程中,我们正在进行使用printf打印数据的作业。在课堂上我们使用Visual Studio Professional 2015但在我的笔记本电脑上我有2017年的Visual Studio社区。在课堂上我们更改必须将工具集更改为2013版本,但我的visual studio没有。这是我的代码:(它在课堂上完美运行,但在我的电脑上运行时出现错误):

; Author:  Keenan Kaufman
; Date:    9/20/2017

.586
.MODEL FLAT, STDCALL

INCLUDELIB msvcrt.lib

EXTERN printf:NEAR
EXTERN exit:NEAR

.STACK  4096

.DATA


plain   BYTE    'Hello, World!'
key     BYTE    02h
cipher  BYTE    SIZEOF plain DUP(?)


.CODE
main   PROC
   sub  eax, eax             ; clear registers
   sub  ebx, ebx
   sub  ecx, ecx

   mov  ebx, 0               ; index into strings
   mov  ecx, SIZEOF plain    ; number of chars in strings
   lea  esi, plain      
   lea  edi, cipher
COPYCHAR:
    mov al, [esi]
    add al, key
    mov [edi], al

    inc esi
    inc edi
    loop COPYCHAR

    lea eax, cipher
    push eax


    call printf               ; call printf C function

   add  esp, 4               ; clean up stack

   mov  eax, 0               ; exit with
   call exit                 ;   return code 0
main   ENDP

END

任何帮助将不胜感激!谢谢!

0 个答案:

没有答案