第七章问题7.7 一调试就报错
assume cs:codesg,ds:datasgdatasg segment
db 'ibm '
db 'dec '
db 'dos '
db 'vax '
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0: mov dx,cx
mov si,0
mov cx,3
s: mov al,
and al,11011111b
mov ,al
inc si
loop s
add bx,16
mov cx,bx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
mtvdm CPU 遇到无效指令。
CS:0000 IP:0077 OP:FO 37 05 0E 02选择’关闭‘终止应用程序
大神们给看看有没有错,一调试就报错,没法截图请见谅 s0循环是个无限循环。
倒数第6、7两行:
add bx,16
mov cx,bx
这两行代码使cx不可能等于0,所以是个死循环 add bx,16这行代码几次循环后已经超出本来的数据段了,导致把不安全的系统内存空间数据改写,产生错误,而且你的代码错误太多,还是回过头再仔细看看书 mov cx,4
mov dx,cx
s0:
。。。。
mov cx,dx
dec dx
loop s0
;默认采用ML6.11汇编程序
DATAS SEGMENT
;此处输入数据段代码
DB 'ibm '
DB 'dec '
DB 'dos '
DB 'vax '
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
;此处输入代码段代码
MOV AX,DATAS
MOV DS,AX
MOV CX,4
MOV AX,STACKS
MOV SS,AX
MOV SP,16
MOV BX,0
SR:
PUSH CX
MOV SI,0
MOV CX,3
SC:
MOV AL,DS:
AND AL,11011111B
MOV DS:,AL
INC SI
LOOP SC
ADD BX,16
POP CX
LOOP SR
MOV AH,4CH
INT 21H
CODES ENDS
END START
页:
[1]