能力值:
( LV2,RANK:10 )
2 楼
.386
.model flat,stdcall
option casemap:none
;include msvcrt.inc 这句貌似可以不要?
includelib msvcrt.lib
;printf PROTO C :ptr sbyte,:vararg
printf PROTO C :dword,:dword 这样也行?
system proto C :dword
.data
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
szArgument db 'Hello World!',0dh,0ah,0
szFormat db '%s',0
szPause db 'pause',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
invoke printf,offset szFormat,offset szArgument
invoke system,offset szPause
ret
end start
我试了下,貌似能弹出个黑框.但感觉是蒙的
继续等待高手!
上传的附件:
能力值:
( LV2,RANK:10 )
3 楼
为什么我的电脑上就没有显示出来。。。就只有“请按任意键继续”
能力值:
( LV5,RANK:70 )
4 楼
把头文件 包含进去 - -!还有你的Printf这个函数 的使用方法 搞错了 - -~!你没学过C语言吗? printf("%s",变量名(表示字符串 - -!))
能力值:
( LV12,RANK:230 )
5 楼
你亮了。。。
能力值:
( LV5,RANK:70 )
6 楼
难道我错了?
能力值:
( LV5,RANK:70 )
7 楼
我记得printf函数是这样用的啊..楼上的楼上请赐教 - -你的言语让我感到恐惧!
能力值:
( LV12,RANK:230 )
8 楼
MSDN....
能力值:
( LV5,RANK:70 )
9 楼
// crt_printf.c
// This program uses the printf and wprintf functions
// to produce formatted output.
#include <stdio.h>
int main( void )
{
char ch = 'h',
*string = "computer";
wchar_t wch = L'w',
*wstring = L"Unicode";
int count = -9234;
double fp = 251.7366;
// Display integers
printf( "Integer formats:\n"
" Decimal: %d Justified: %.6d "
"Unsigned: %u\n",
count, count, count, count );
// Display decimals
printf( "Decimal %d as:\n Hex: %Xh "
"C hex: 0x%x Octal: %o\n",
count, count, count, count );
// Display in different radixes
printf( "Digits 10 equal:\n Hex: %i "
"Octal: %i Decimal: %i\n",
0x10, 010, 10 );
// Display characters
printf("Characters in field (1):\n"
"%10c%5hc%5C%5lc\n",
ch, ch, wch, wch);
wprintf(L"Characters in field (2):\n"
L"%10C%5hc%5c%5lc\n",
ch, ch, wch, wch);
// Display strings
printf("Strings in field (1):\n%25s\n"
"%25.4hs\n %S%25.3ls\n",
string, string, wstring, wstring);
wprintf(L"Strings in field (2):\n%25S\n"
L"%25.4hs\n %s%25.3ls\n",
string, string, wstring, wstring);
// Display real numbers
printf("Real numbers:\n %f %.2f %e %E\n",
fp, fp, fp, fp );
// Display pointer
printf( "\nAddress as: %p\n", &count);
}
MSDN是这样告诉我们的!
能力值:
( LV5,RANK:70 )
10 楼
我只是简化了一点 前面的format写了一个%S嘛....55555 不要吓我嘛!
能力值:
( LV12,RANK:230 )
11 楼
The format argument consists of ordinary characters, escape sequences, and (if arguments follow format) format specifications. The ordinary characters and escape sequences are copied to stdout in order of their appearance.
能力值:
( LV5,RANK:70 )
12 楼
英语烂的飘过 - -
能力值:
( LV2,RANK:10 )
13 楼
给力点啊。。。
能力值:
( LV7,RANK:110 )
14 楼
二楼的代码已经能解决你的问题了
能力值:
( LV12,RANK:530 )
15 楼
.386
.model flat,stdcall
option casemap:none include windows.inc
include masm32.inc
includelib kernel32.lib
includelib masm32.lib
include D:\RadASM\masm32\macros\macros.asm .code
start:
invoke StdOut,CTXT('Hello World',0d,0ah)
ret
end start
自己也写了一个控制台程序,谢谢参考!!最后一个包含宏的路径要设置正确,根据你自己的目录设置,谢谢!
能力值:
( LV2,RANK:10 )
16 楼
好像不是代码的问题啊。。。
能力值:
( LV2,RANK:10 )
17 楼
代码没错?
00401000 >/$ 68 00304000 PUSH Hello.00403000 ; /format = "Hello!"
00401005 |. E8 04000000 CALL <JMP.&msvcrt.printf> ; \printf
参数才一个,显示得出来那就是真的奇怪了
能力值:
( LV2,RANK:10 )
18 楼
是没错啊。。莫非是编译器的问题?
能力值:
( LV2,RANK:10 )
19 楼
还说没问题
这样解决
你用C写一条HELLO
然后用OD跟,看看C写出来的程序压了几个参,在看看你的压了几个参
具体解决方法沙发已经告诉你了
能力值:
( LV2,RANK:10 )
20 楼
这个我不明白的.
能力值:
( LV2,RANK:10 )
21 楼
你试试他的源码,和我的效果是一样的。。。
代码是没有错的。。。printf一个参数也是没问题的。
能力值:
( LV2,RANK:10 )
22 楼
汇编调用C语言运行时库的话不需要先初始化C语言运行时库吗?是不是该参考下VC中CRTmain那部分代码
能力值:
( LV6,RANK:80 )
23 楼
根据LZ帖子标题 + 2#的图 + 3#的回复。
LZ可以把得出3#结论的EXE文件上传下来给别人试试。
代码貌似没问题。
另外貌似有两个人在乱扯谈 楼主完全不用理会。
能力值:
( LV6,RANK:80 )
24 楼
再加。
1#所说的黑框也不显示一下,可以看看链接参数。
subsystem:console
能力值:
( LV3,RANK:20 )
25 楼
我到现在也不会写个"HelloWorld", 看来以后要找机会补习一下了.........