. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  希望有人指点12  实验9有点疑惑  [已解决] 回复[ 6次 ]   点击[ 301次 ]  
w452367233
[帖 主]   [ 发表时间:2009-01-06 22:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-01-02 13:12
assume cs:code,ds:data,ss:stack

data segment
        db 'Welcome to masm!'
        db 2h,24h,71h
data ends

stack segment
        dw 0
stack ends

code segment
start:        mov ax,data
        mov ds,ax
        mov ax,stack
        mov ss,ax
        mov sp,2
        mov ax,0b872h
        mov es,ax
        mov bx,0
        mov di,10h   
        mov cx,3
s:        push cx
        mov si,0
        mov cx,8
s0:        mov al,[si]
        mov es:[bx][si],al
        mov al,[di]
        mov es:1[si],al
        add si,2
        loop s0
        
        pop cx
        add bx,0a0h
        add di,1
        loop s
        mov ax,4c00h
        int 21h
code ends
end start
w452367233
[第1楼]   [ 回复时间:2009-01-06 22:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-01-02 13:12
请问下各位 为什么执行到mov ax,b872h后程序结束了?
ericli
[第2楼]   [ 回复时间:2009-01-08 12:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-01 14:50
立即数不能以字母开头,可以写成
mov ax,0b872h
younggay
[第3楼]   [ 回复时间:2009-01-09 18:04 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
楼上正解!基础知识要牢固啊。
younggay
[第4楼]   [ 回复时间:2009-01-09 18:10 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
嗯?看了楼主的代码,代码中是写的mov ax,0b872.运行了你的程序,发现显示不对。典型的错误。

显存中两个字节对应一个字符。你的错误就在s0循环上了。是不是你在单步跟踪的时候运行到mov ax,0b872这条指令就出问题啊?!这个在开始学习的第三章好像就遇到了,是你的sp值设小了,导致单步跟踪的时候,中断使用当前栈空间存储cpu现场数据的时候发生了栈越界,而保护模式下(windwos下)认为这个行为是不安全的,所以,就给你毙掉了。
回头想想,以前是不是单步跟踪的时候也遇到过这个问题??
w452367233
[第5楼]   [ 回复时间:2009-01-10 14:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-01-02 13:12
听君一席话茅塞顿开。。  我日志里还有个问题 能不能帮忙解释下 谢谢了 关于实验10第3个子程序的
w452367233
[第6楼]   [ 回复时间:2009-01-10 14:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-01-02 13:12
此贴由 贴主 于 [ 2009-01-10 14:11 ] 结贴。 结贴原因:问题已解决
得分情况: 4楼(younggay):10分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved