高分求大神帮忙!NTVDM CPU遇到无效指令关闭解决方法
发布时间:2010-06-14 15:32:25 文章来源:www.iduyao.cn 采编人员:星星草
高分求大神帮忙!NTVDM CPU遇到无效指令关闭
输入小写,逆向输出大写,下面是程序
data segment
xiao db 100
db 0
db 100 dup('$')
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov di,offset xiao
mov ah,0ah
mov dx,di
int 21h
xor ax,ax
mov al,[di+1]
mov al, bh;标志下次区变大写的循环
mov bp,ax
lea si,[di+2]
mov bl,2
div bl
xor cx,cx
mov cl,al
min:
mov al,[si]
mov bl,[si+bp-1]
mov [si+bp-1],al
mov [si],bl
inc si
dec bp
dec bp
loop min
xor cx,cx
mov cl,bh
lea si,[di+2]
ni:
cmp byte ptr[si],'a'
jb hao
cmp byte ptr[si],'z'
ja hao
sub byte ptr[si],20h
hao:
inc si
loop ni
mov dl,0ah
mov ah,02h
int 21h
lea dx,[di+2]
mov ah,09h
int 21h
mov ah,0
int 16h
mov ax,4c00h
int 21h
code ends
end start
编译连接没有错误,可是当运行输入,字母也能显示,可是当按回车键的时候出现 NTVDM CPU 遇到无效的指令
cs:0000 ip:0077 op:fo 37 05 10 02
选择关闭终止应用程序
在多台电脑上面实验都是这个结果
------解决方案--------------------
>> mov al, bh ;标志下次区变大写的循环
上面这指令什么意思?它清除了了 al 里的输入的字符的个数,导致后面的 loop 循环溢出,将代码乱改了,最后程序崩溃。
------解决方案--------------------
指令流跑偏,导致遇到无效指令,建议监控一下指令流
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
MSN通讯协议逆向
MSN 进行数据通讯中,据说用了TWN认证,通过SSL/TLS连接到login.passport.com和 loginnet.passportr.com 等服务器。
...
-
win7+64位cpu的exe反汇编问题,多次问人,无果
vs20008写的一个很简单的c++控制台程序
平台是:win7 64位操作系统
用od进行反汇编,...
-
可能很白痴的问题:想给ax赋一个负数怎么做?
比如想要赋一个-5给ax,是不是只有求出这个-5的补码,然后mov进这个补码这一种方法?
------...
-
居然显示不出负数来,悲剧
Assembly code
.386
.model flat,stdcall
include kernel32.inc
includelib kernel32.lib
include ms...
-
call far ptr '标号'的问题[在线等答案]
为什么ax会是1010?不是1006??求详细解答
难道call far ptr不是执行了push cs,push ip,jm...
-
CPU的程序计数器PC和指令指针寄存器IP是一个东西吗?
看上去好像功能完全一样,又觉得不应该是一回事,求教
------解决方案----------...
-
菜鸟问题,高人来帮忙
编程,统计data段中数值为8的字节的个数,用ax保存结果
我的代码
Assembly code
assume cs:code,ds:data
data se...
-
一个死循环问题
什么原因造成内循环才刚循环一次还没完,到了loop s1的时候cx突然变成F?
Assembly code
assume cs:codesg,ds:datas...
-
初学MUL乘法指令,写法求解释下
MUL r8/m8 ;无符号字节乘:AX←AL×r8/m8
MUL r16/m16 ;无符号字乘:DX.AX←AX×r16/...
-
汇编如何 取到8051的P0口的内容呢?
Assembly code
ORG 0000H
AJMP START
ORG 0030H
START: MOV P0,#00H
LOOP: ...