敲机房收费系统,刚开始几天,天天遇到坎儿。昨天又遇到一个新的,给出的错误提示如下图:遇到问题解决问题,上网查了一下,原来是API函数中区分大小写,以前还真的是没有特别注意到。查看了一下,跟以前的代码还真是有点不同。正确的代码:错误的代码:把标注的小写改为大写就可以了,大家以后也要特别注意啊,不要跟我犯同样的错误。
//str1 regasm 指定目录下的
dll
文件,加上/codebase 表明全局注册
string str = @"cd /d C:\Windows\Microsoft.NET\Framework\v4.0.30319";
string str1 = @"regasm " + Ap...
模块已加载,但
找
不到
入口
点
DLL
RegisterServer
通常在运行中注册动态库文件:regsvr32 xxx.
dll
(按回车键执行命令)都能顺利通过。
但有时也会报出异常:
模块“xxx.
dll
”已加载,但
找
不到
入口
点
DLL
RegisterServer。请确保xxx.
dll
为有效的
DLL
或OCX文件,然后重试。
首先确保
dll
文件放在正确的位置:
32位系统将
dll
文件放在C:\Windows\System32 文件夹内。64位系统将
dll
文件放在C:\Windows\System32 文件夹
今天刷机,因为小米要刷第三方rom,所以要降级,格盘的那个软件需要这个
dll
,,但是没有
找
个这个,我就拷贝了下放到system32下面,然后还是不行,就直接执行注册,然后就报了这个错,其实很简单
如果使用的是 32位 操作系统:
只需把
dll
文件放到“X:\Windows\system32” (X代表您系统所在目录盘符,如:C:\Windows\system32 ) ;
如果使用的是 64位操
windbg中有个sxe命令,用于启动某类事件上的调试中断。例如
sxe ld:kernel32.
dll
可以在exe加载kernel32.
dll
时中断到调试器。不过,一般情况下,exe无法捕获kernel32.
dll
加载的事件。因为当windbg启动捕获到ibp事件(初始断点
)而中断到调试器后,exe启动时所依赖的
dll
都已加载完毕(包括kernel32.
dll
)。如下面的清单,当windb
汇编语言 使用radasm汇编器 从键盘输入一个长度不超过30的字符串,其中包含自己的班级名称+学号+姓名的拼音(班级和姓名的首字母大写),以“$”符号结束,之后完成以下任务(要求使用子程序): 屏幕显示输出该字符串; 将该字符串的奇数位置字符提取出来,组合成一个字符串显示输出。 将该字符串中的所有数字字符剔除,然后显示输出; 将该字符串中的英文大写字母变成小写字母,小写字母变成大写字母,显示输出; 统计该字符串中的大写字母、小写字母和数字的个数,保存在内存变量中,并在屏幕上显示; 将该字符串中的数字进行累加,将累加结果显示输出。
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\comctl32.inc
include \masm32\include\masm32.inc
include \masm32\include\gdi32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\shell32.inc
include \masm32\include\
advapi
32.inc
include \masm32\include\msvcrt.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\comctl32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\
advapi
32.lib
includelib \masm32\lib\msvcrt.lib
.data
input_str db 31 dup(0)
output_str db 31 dup(0)
odd_str db 31 dup(0)
no_digit_str db 31 dup(0)
count_upper dd 0
count_lower dd 0
count_digit dd 0
sum dd 0
.code
start:
call get_input ; 获取输入字符串
call display_input ; 显示输入字符串
call extract_odd ; 提取奇数位置字符
call display_odd ; 显示奇数位置字符
call remove_digit ; 剔除数字字符
call display_no_digit ; 显示无数字字符
call toggle_case ; 大小写转换
call display_toggle ; 显示转换后的字符串
call count_chars ; 统计字符个数
call display_count ; 显示字符个数
call sum_digits ; 累加数字
call display_sum ; 显示数字累加结果
call finish ; 程序结束
get_input proc
invoke crt_clrscr ; 清屏
invoke crt_puts, addr input_prompt ; 显示提示信息
invoke crt_gets, addr input_str, 31 ; 获取输入字符串
get_input endp
display_input proc
invoke crt_puts, addr input_str ; 显示输入字符串
display_input endp
extract_odd proc
xor eax, eax
xor ecx, ecx
mov esi, offset input_str
mov edi, offset odd_str
mov al, [esi]
cmp al, '$'
je @F
mov [edi], al
add esi, 2
add edi, 1
inc ecx
jmp @B
extract_odd endp
display_odd proc
invoke crt_puts, addr odd_str ; 显示奇数位置字符
display_odd endp
remove_digit proc
xor eax, eax
xor ecx, ecx
mov esi, offset input_str
mov edi, offset no_digit_str
mov al, [esi]
cmp al, '$'
je @F
cmp al, '0'
jb @skip
cmp al, '9'
ja @skip
jmp @store
@skip:
inc esi
jmp @B
@store:
mov [edi], al
add esi, 1
add edi, 1
inc ecx
jmp @B
remove_digit endp
display_no_digit proc
invoke crt_puts, addr no_digit_str ; 显示无数字字符
display_no_digit endp
toggle_case proc
xor eax, eax
xor ecx, ecx
mov esi, offset input_str
mov edi, offset output_str
mov al, [esi]
cmp al, '$'
je @F
cmp al, 'A'
jb @next
cmp al, 'Z'
ja @next
add al, 32
jmp @store
@next:
cmp al, 'a'
jb @store
cmp al, 'z'
ja @store
sub al, 32
@store:
mov [edi], al
add esi, 1
add edi, 1
inc ecx
jmp @B
toggle_case endp
display_toggle proc
invoke crt_puts, addr output_str ; 显示转换后的字符串
display_toggle endp
count_chars proc
xor eax, eax
xor ebx, ebx
xor ecx, ecx
mov esi, offset input_str
mov al, [esi]
cmp al, '$'
je @F
cmp al, 'A'
jb @next
cmp al, 'Z'
ja @next
inc count_upper
jmp @next
@next:
cmp al, 'a'
jb @next_digit
cmp al, 'z'
ja @next_digit
inc count_lower
jmp @next_digit
@next_digit:
cmp al, '0'
jb @skip
cmp al, '9'
ja @skip
inc count_digit
@skip:
add esi, 1
jmp @B
count_chars endp
display_count proc
invoke crt_puts, addr count_prompt ; 显示提示信息
invoke crt_putdec, count_upper ; 显示大写字母个数
invoke crt_puts, addr comma
invoke crt_putdec, count_lower ; 显示小写字母个数
invoke crt_puts, addr comma
invoke crt_putdec, count_digit ; 显示数字个数
display_count endp
sum_digits proc
xor eax, eax
mov esi, offset input_str
mov al, [esi]
cmp al, '$'
je @F
cmp al, '0'
jb @next
cmp al, '9'
ja @next
sub al, '0'
add sum, eax
@next:
add esi, 1
jmp @B
sum_digits endp
display_sum proc
invoke crt_puts, addr sum_prompt ; 显示提示信息
invoke crt_putdec, sum ; 显示数字累加结果
display_sum endp
finish proc
invoke crt_getkey ; 程序结束,等待用户按下任意键
invoke crt_exit, 0 ; 退出程序
finish endp
input_prompt db 'Please enter a string (max 30 characters): ', 0
count_prompt db 'Upper case letters: ', 0
comma db ', '
sum_prompt db 'Sum of digits: ', 0
end start
在代码中,我们使用了多个子程序来完成不同的任务,使程序更加清晰易懂。其中,`get_input` 子程序用于获取输入字符串,`display_input` 子程序用于显示输入字符串,`extract_odd` 子程序用于提取奇数位置字符,`display_odd` 子程序用于显示提取出的字符,`remove_digit` 子程序用于剔除数字字符,`display_no_digit` 子程序用于显示剔除后的字符,`toggle_case` 子程序用于大小写转换,`display_toggle` 子程序用于显示转换后的字符串,`count_chars` 子程序用于统计字符个数,`display_count` 子程序用于显示字符个数,`sum_digits` 子程序用于累加数字,`display_sum` 子程序用于显示数字累加结果,`finish` 子程序用于结束程序。