. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->包含多个段的程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验五(5)  [已解决] 回复[ 3次 ]   点击[ 394次 ]  
slan
[帖 主]   [ 发表时间:2010-06-08 19:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-26 17:15
我的最开始的程序是这样的:
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 ax,c
mov ss,ax
mov sp,8H
mov al,0
mov bx,0

mov cx,8
s:
mov ah,[bx]
add ah,es:[bx]
push ax
inc sp
inc bx
loop s

mov ah,4cH
int 21H
code ends
end start
编译,连接都通过了 但是在debug调试的时候,调试到循环那里循环到一半就会跳出来
根据一句句执行后 我认为是 mov sp,8H 这句错了于是就改为:mov sp,10H
虽然比之前执行多了几次循环可是还会跳出来(此时的sp=0BH), 于是就再改为:mov sp,20H
这次却行了! 当然,得到的结果不是本题想要的。
我不明白的是前两次怎么执行到一半就跳出来了 是栈的空间不够吗 好像不是啊?
请各位大大给小弟我解解惑~~
aijian837
[第1楼]   [ 回复时间:2010-06-10 17:41 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:0
注册日期:2010-06-09 16:05
inc sp 
???????????
slan
[第2楼]   [ 回复时间:2010-06-12 15:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-26 17:15
搞了很久,终于明白了,原来debug中的问题,不是程序的问题,详细我写在博客中了。如下:
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=23735&kindLevel=1&kindId=35414&postId=47387&readSg=1
slan
[第3楼]   [ 回复时间:2010-06-12 15:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-26 17:15
此贴由 贴主 于 [ 2010-06-12 15:36 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved