土匪 发表于 2012-5-16 00:47:29

王爽《汇编语言》书中实验5的第六题

我在完成王爽《汇编语言》这本书中实验5的第六题时,我补全code段中的代码如下:assume cs:codea segment       dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffha endsb segment       dw 0,0,0,0,0,0,0,0b endscode segmentstart:mov ax,a         mov ds,ax         mov ax,b         mov ss,ax         mov sp,10h         mov bx,0         mov cx,8s:       push          add bx,2         loop s         mov ax,4c00h         int 21hcode endsend start编译连接后,用debug 加载调试,单步执行的过程中,当循环到cx为3时就停了,不能执行到程序的末尾,不知是怎么回事,求解,谢谢各位啦!

mockitty999 发表于 2012-5-16 13:53:21

- -.......











static/image/common/sigline.gif
魔豆子时尚购物 打造一站式购物平台

leebox 发表于 2012-5-16 17:08:14

assume cs:code,ds:a,ss:b;申请数据空间和栈空间

a segment

       dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh

a ends

b segment

       dw 0,0,0,0,0,0,0,0

b ends

code segment

start:mov ax,a

         mov ds,ax

         mov ax,b

         mov ss,ax

         mov sp,10h

         mov bx,0

         mov cx,8

s:       push

         add bx,2

         loop s

         mov ax,4c00h

         int 21h

code ends

end start

你没有申请栈段空间和数据段空间 所以当你赋予栈段地址的时候其实那段地址是有数据的并不是空的 所以你在push时其实是在改写原有的内存空间内容导致debug崩溃 你可以用debug调试看看用D命令查看ss:sp 地址是否是空的

记得一定要先申请段空间 写入内容
页: [1]
查看完整版本: 王爽《汇编语言》书中实验5的第六题