主题:请教一个撒凯密码加密的汇编程序
include io32.inc
.data
msg1 byte'input the string:',0
bufnum =255
buffer byte bufnum+1 dup(0) ;内存空间
.code
start:
mov eax,offset msg1
call dispmsg ;显示字符串
mov eax,offset buffer
call readmsg
mov ecx,eax
xor ebx,ebx
encrypt:
mov eax,[ebx] ;取一个数
cmp eax,'A' ;和A比较大小
jc next ;小于‘A’不用处理,转移到下一个
cmp eax,'z' ;和‘z’做比较
jnc next ;大于‘z’不用处理,转移下一个
cmp eax,'a' ;和‘a’做比较
jc change ;小于‘a’可能是大写,转移
add eax,4 ;大于‘a’小于‘z’加密
cmp eax,'z' ;加密过后和‘z’比较
jnc first ;大于z,超过了最后的字母,应减去26
jmp next ;介于大写和小写之间,转移
change:cmp eax,'Z' ;和‘Z’做比较
jnc next ;大于Z不用处理,转移下一个
add eax,4 ;大于A小于Z加密
cmp eax,'Z' ;加密后和Z比较
jnc first ;大于Z,超过了最后的字母,应减去26
jmp next
first:sub eax,26
next:
inc ebx
dec ecx
jnz encrypt
mov eax,offset buffer
call dispmsg
exit 0
end start
运行的时候没有错误,但是老弹出“内存不能为read”框框,改了很久都不行,请各位高人指点啊!!!
.data
msg1 byte'input the string:',0
bufnum =255
buffer byte bufnum+1 dup(0) ;内存空间
.code
start:
mov eax,offset msg1
call dispmsg ;显示字符串
mov eax,offset buffer
call readmsg
mov ecx,eax
xor ebx,ebx
encrypt:
mov eax,[ebx] ;取一个数
cmp eax,'A' ;和A比较大小
jc next ;小于‘A’不用处理,转移到下一个
cmp eax,'z' ;和‘z’做比较
jnc next ;大于‘z’不用处理,转移下一个
cmp eax,'a' ;和‘a’做比较
jc change ;小于‘a’可能是大写,转移
add eax,4 ;大于‘a’小于‘z’加密
cmp eax,'z' ;加密过后和‘z’比较
jnc first ;大于z,超过了最后的字母,应减去26
jmp next ;介于大写和小写之间,转移
change:cmp eax,'Z' ;和‘Z’做比较
jnc next ;大于Z不用处理,转移下一个
add eax,4 ;大于A小于Z加密
cmp eax,'Z' ;加密后和Z比较
jnc first ;大于Z,超过了最后的字母,应减去26
jmp next
first:sub eax,26
next:
inc ebx
dec ecx
jnz encrypt
mov eax,offset buffer
call dispmsg
exit 0
end start
运行的时候没有错误,但是老弹出“内存不能为read”框框,改了很久都不行,请各位高人指点啊!!!