专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

一个简单的汇编程序,如何总是报错

发布时间:2010-06-14 15:51:15 文章来源:www.iduyao.cn 采编人员:星星草
一个简单的汇编程序,怎么总是报错?
Assembly code


assume cs:code,ss:stack,ds:data
data segment
     db 0,2,4,7,8,9
     db '// :: '
data ends
stack segment 
     db 0,0,0,0,0,0,0,0,0,0,0,0
stack ends
code segment
start:   mov ax,stack
         mov ss,ax
         mov sp,0ch
         mov ax,data
         mov ds,ax
         mov si,0
         mov cx,6
         mov ah,0
      s1:mov al,[si] ;取时间函数
         out 70h,al
         in al,71h
         push ax 
         inc si ;debug 调试到si==3时就出问题了,提示NIVDM CPU遇到无效的指令,将push ax指令注释掉则正常
         loop s1
          
         mov bp,sp ;sp = 0
         call charToAscii
         
         ;显示
         mov ax,0b800h
         mov es,ax
         mov ax,ss
         mov ds,ax
         mov si,0
         mov di,0a0h*12+4*2
         mov cx,12
         rep movsb
         
         mov ax,4c00h
         int 21h
         
charToAscii: push bp
             push cx
          s2:mov ah,0
             mov bh,0
             mov al,ss:[bp+1]
             add al,30h
             mov cl,4
             shr byte ptr ss:[bp+1],cl
             mov bl,ss:[bp+1]
             add bl,30h
               mov ss:[bp],ax
             mov ss:[bp+1],bx
             add bp,2
             pop cx
             loop s2
             ret
             
code ends
end start




------解决方案--------------------
push 那里的错误是由于堆栈太小了
------解决方案--------------------
探讨
引用:

push 那里的错误是由于堆栈太小了


为啥太小,初学者不好意思,PUSH 6次,不是刚刚好吗?
谢谢
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: