|
主题 : : 第七章7.9问题 [待解决] |
回复[ 5次 ]
点击[ 424次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-04-15 14:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-03-26 12:10 |
assume cs:code,ss:stack,ds:data
stack esgment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
mov bx,0
mov si,0
mov cx,4
s0: push cx
mov cx,4
s: mov al,[bx+3+si]
and al,11011111B
mov [bx+3+si],al
inc si
loop s
mov bx,16
pop cx
loop s0
mov ax,4c00h
int 21h
code ends
end start
为什么运行之后debug跟踪,发现,在程序返回的时候使用d查看了data数据段和ss数据段,发现内存中也有data数据段,是否正常?我们的对象就一个就是data段(目标段),ss段中的数据是临时的? | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-04-15 14:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-03-26 12:10 |
|
|
|
|
|
[第2楼]
[ 回复时间:2010-06-02 18:52 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-17 21:22 |
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start:mov ax,stacksg
mov ss,ax
mov sp,10h
mov ax,datasg
mov ds,ax
mov cx,4
mov si,0
s0: push cx
mov cx,4
mov bx,3
s1: mov al,ds:[bx+si]
and al,11011111b
mov ds:[bx+si],al
inc bx
loop s1
add si,10h
pop cx
loop s0
mov ah,4ch
int 21h
codesg ends
end start | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-06-11 16:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:8
信誉值:0
注册日期:2010-06-09 16:05 |
stack esgment
-------
stack segment | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-06-24 19:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-20 18:28 |
mov si,0
的位置放置的地方不对,LZ这样,si在 s1第一次4循环的时候被累加到4,第二次的时候就需被累加。所以应该吧 si的赋值放在 s0循环内 s1循环外 这样每次退出s1到s0的时候 si就会重新被赋值s0 | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-06-24 19:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-20 18:28 |
|
|