怎样在C程序里面加上汇编代码进行编写-请大神指点指点
高手们,我想在一个C程序的前面加上一段验证密码的汇编代码可不可以啊!下面就是汇编代码与C程序的代码,就是想知道是怎么加到C程序里面的:
DATAREA SEGMENT
CODE DB 'ABCDEF'
BUFFER DB 7, 0, 7 DUP(?)
MESS1 DB 'INPUT CODE:$'
MESS2 DB 0DH, 0AH, '$'
MESS3 DB 'OK!$'
MESS4 DB 'ERROR!PLESE REINPUT:$'
DATAREA ENDS
PROGRAM SEGMENT
MAIN PROC FAR
ASSUME DS:DATAREA, ES:DATAREA, CS:PROGRAM
START:
MOV AX, DATAREA
MOV DS, AX
MOV ES, AX
LEA DX, MESS1
REINPUT:MOV AH, 09H
INT 21H
MOV DX, OFFSET BUFFER
MOV AH, 0AH
INT 21H
LEA DX, MESS2
MOV AH, 09H
INT 21H
MOV SI, OFFSET CODE
MOV DI, OFFSET BUFFER + 2
MOV CX, 6
CLD
REPE CMPSB
JNE UNEQU
MOV DX, OFFSET MESS3
MOV AH, 09H
INT 21H
MOV AH, 04CH
INT 21H
UNEQU: MOV DX, OFFSET MESS4
JMP REINPUT
MAIN ENDP
PROGRAM ENDS
END START
*******************************
#include <stdio.h>
void main()
{
printf("^_^欢迎进入c的世界\n");
}
采用函数调用的方式
在函数体内
用以下结构插入汇编:
__asm
{
(汇编内容)
} 貌似可以,要调用什么汇编函数 红头发 发表于 2013-12-21 21:23 static/image/common/back.gif
采用函数调用的方式
在函数体内
用以下结构插入汇编:
老兄,你看一下是不是这样啊!
#include <stdio.h>
void main()
{
_asm
{
DATAREA SEGMENT
CODE DB 'ABCDEF'
BUFFER DB 7, 0, 7 DUP(?)
MESS1 DB 'INPUT CODE:$'
MESS2 DB 0DH, 0AH, '$'
MESS3 DB 'OK!$'
MESS4 DB 'ERROR!PLESE REINPUT:$'
DATAREA ENDS
PROGRAM SEGMENT
MAIN PROC FAR
ASSUME DS:DATAREA, ES:DATAREA, CS:PROGRAM
START:
MOV AX, DATAREA
MOV DS, AX
MOV ES, AX
LEA DX, MESS1
REINPUT:MOV AH, 09H
INT 21H
MOV DX, OFFSET BUFFER
MOV AH, 0AH
INT 21H
LEA DX, MESS2
MOV AH, 09H
INT 21H
MOV SI, OFFSET CODE
MOV DI, OFFSET BUFFER + 2
MOV CX, 6
CLD
REPE CMPSB
JNE UNEQU
MOV DX, OFFSET MESS3
MOV AH, 09H
INT 21H
MOV AH, 04CH
INT 21H
UNEQU: MOV DX, OFFSET MESS4
JMP REINPUT
MAIN ENDP
PROGRAM ENDS
END START
}
printf("^_^欢迎进入c的世界\n");
}
但我编译了一下,出错了,这怎么回事儿啊!
_asm{}中的汇编语言不能用伪指令!所以你如果要定义数据的话可以在_asm{}外用c语言的方法定义。 或者用#include "windows.h"
然后再程序开始(_asm外面)用BYTE LABEL[]={0x10,0x20,0x30,0x00};定义 msdn上专门有介绍asm的用法,详细讲明了不能用db,dw,....这些伪指令 回复顶贴没意见吧!!{:7_183:}
页:
[1]