|
主题 : : 实验5 (5) [待解决] |
回复[ 7次 ]
点击[ 478次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2007-10-20 01:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-10-10 19:41 |
思路:将a段和b段依次相加结果存入a段,再将a段值赋给c段。
代码如下:
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:
mov ax,a
mov ds,ax
mov ax,b
mov es,ax
mov bx,0
mov cx,8
s1:mov ax,es:[bx]
add [bx],ax
add bx,2
loop s1
mov ax,c
mov ds,ax
mov ax,a
mov es,ax
mov bx,0
mov cx,8
s2:
mov ax,es:[bx]
add [bx],ax
add bx,2
loop s2
mov ax,4c00h
int 21h
code ends
end start
debug加载后,可看到a段地址为13c6,b段地址为13c7,c段地址为13c8
-d 13c8:0 7
结果是正确的。
问个问题:
编译连接后得到的exe文件,我不debug **.exe,而是command中直接运行后,
再在debug下输入:-d 13c8:0 7
能否得到:02 04 06 08 0A 0C 0E 10这个结果? | | |
|
|
|
|
[第1楼]
[ 回复时间:2007-10-20 09:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53 |
|
|
|
|
|
[第2楼]
[ 回复时间:2007-10-20 10:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18 |
我试了,你试了吗?
------------------
回复:谁试谁知道! 哈哈. | | |
|
|
|
|
[第3楼]
[ 回复时间:2007-10-20 11:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53 |
|
|
|
|
|
[第4楼]
[ 回复时间:2007-10-20 11:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18 |
当程序退出后,程序所占用的内存空间就被释放了,这段内存空间就被系统管理了.如果此时加载其它程序就有可能占用原来的空间,原来的数据就有可能被覆盖.
所以上一个程序被不被覆盖还要看当时的内存占用情况.
举个例子 就好像你在教室讲课写下了板书,你下课了,至于板书被不被擦掉就要看下一节课有没有占用这个教室上课,或者制度有没有让人下课后就擦黑板的.总之黑板不归你用了你也管不着了. | | |
|
|
|
|
[第5楼]
[ 回复时间:2007-10-29 20:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53 |
哪里有毛病啊???
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:
mov bx,0
mov cx,8
s:
mov ax,a
mov ds,ax
mov ax,[bx]
mov dx,b
mov ds,dx
mov dx,[bx]
mov ax,dx
mov dx,c
mov ds,dx
mov [bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第6楼]
[ 回复时间:2007-10-29 20:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53 |
|
|
|
|
|
[第7楼]
[ 回复时间:2007-10-29 21:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53 |
做了两个批处理文件,献给大家:
a.bat:
masm 1;
link 1;
cls
//asm
d.bat:
cls
debug 1.exe
//debug
ad.bat
masm 1;
link 1;
cls
debug 1.exe
星期三是高手啊。我觉得assembler就是王爽。 | | |
|