. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  int 21h的执行 是不是会影响自己的程序?  [待解决] 回复[ 6次 ]   点击[ 346次 ]  
546783926
[帖 主]   [ 发表时间:2011-09-24 15:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-24 15:26
写的程序如下:

assume cs:code
code segment
dw 1,2,3,4,5,6,7,8

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

start:mov ax,cs
mov ss,ax
mov sp,24h

mov ax,0
mov ds,ax
mov bx,0
mov cx,8

s: push [bx]
pop cs:[bx]
add bx,2
loop s

mov ax,4c00h
int 21h

code ends
end start

当在debug下执行时,在int 21h执行之前查看内存是正确的,可int 21h执行结束后结果就变了
当时我的cs是 0c45 而int 21h的地址是0c45:000c
个人认为是不是int 21h的执行会改变0c45:000c的内容?
chinatree
[第1楼]   [ 回复时间:2011-09-24 22:18 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
mov ax,4c00h
int 21h
这两句是程序退出的意思,怎么退出的你不用管,书上在第四章已经讲了。那是中断,在书上第十二章会详细的讲解的。
winglong
[第2楼]   [ 回复时间:2011-10-03 21:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-10-03 21:00
好高深啊,呵呵,看不懂,,
sharexsps
[第3楼]   [ 回复时间:2011-12-03 01:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-11-16 22:56
CPU执行int n指令相当于引发n号中断过程
相当于1、取中断类型码n
2、标志寄存器入栈,IF=0,TF=0
3、CS,IP入栈
4、IP=N*4
CS=N*4+2
所以执行int 21的时候CS,IP的值都是会改变的。。
zhujinwu
[第4楼]   [ 回复时间:2011-12-07 13:24 ]   [引用]   [回复]   [ top ] 
荣誉值:15
信誉值:0
注册日期:2011-11-03 09:29
应该说int 21h的执行会改变cs、ip的值,而不能改变cs:ip所指向的内容。且在debug下,你应该用p命令执行int 21h,而不是用t命令执行。
dierlei
[第5楼]   [ 回复时间:2011-12-09 20:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2011-12-08 17:50
个人觉得是:程序中断,返回
a605250419
[第6楼]   [ 回复时间:2012-01-13 13:51 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2012-01-13 13:36
我的理解是
mov 4c00h
int 21h
这个指令是程序结束和返回的指令
用debug 运行程序是
遇到mov 4c00h
    int 21h
后会从你的程序退出
并返回debug中
那debug 运行时他的指令地址和你刚才的地址不同,所以会出现CS和IP的值改变
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved