《汇编语言》有一段话看不懂

asd605499941a 2012-02-06 09:04:28



我怎么感觉好像没多大差别。- -勿喷
...全文
116 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
asd605499941a 2012-02-07
  • 打赏
  • 举报
回复
assume cs:code
data segment
db "overflow!"
data ends
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0
mov ax,1000h
mov bx,1
div bl
mov ax,4c00h
int 21h
;--------------------------------------
do0:
mov ax,data
mov ds,ax
mov si,0
mov ax,0b800h
mov es,ax
mov di,12*160+36*2
mov cx,9
s:
mov al,[si]
mov es:[di],al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
do0end:nop
;--------------------------------------------------
code ends
end start

这段程序我运行了下,没有错呀。。
ProgrammingRing 2012-02-07
  • 打赏
  • 举报
回复
make下,还没看到这里
masmaster 2012-02-07
  • 打赏
  • 举报
回复
你好像没有认真看这一章(应该是第十二章,讲的是内中断)。运行此程序前后,分别用debug的D命令查看一下0:200的内容,你就明白了。
asd605499941a 2012-02-07
  • 打赏
  • 举报
回复
能举个例子吗。。
asd605499941a 2012-02-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 masmaster 的回复:]
当安装完这个中断程序以后,程序退出啦
[/Quote]
安装完不是复制完而已么?怎么会退出呢。而且退出程序后,也不能进行运算了,那这样做还有什么意思哦- -。。。。
masmaster 2012-02-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 asd605499941a 的回复:]
明白了。这是针对多个程序来说的。一个说明不了什么。
[/Quote]

你把安装程序和那段除法测试的分开。即先安装, 然后,再在debug里做一个除法溢出。这样,你就明白啦。
asd605499941a 2012-02-07
  • 打赏
  • 举报
回复
明白了。这是针对多个程序来说的。一个说明不了什么。
masmaster 2012-02-06
  • 打赏
  • 举报
回复
因为在编译的时候, 数据段里定义的信息"overflow"作为程序的全局变量被“固定”(这个词或许不恰当)在内存里的某个地址上啦。而本程序的目的是遇到除法溢出的时候,去显示这个信息。当安装完这个中断程序以后,程序退出啦,本程序所占用的内存空间被OS释放掉啦。在DOS里,有一段空间是“安全的”,这就是0:200~0:2ff这256字节的存储区域。所以, 教材里使用的是这段空间。
书里:
mov di,200H
;指的就是这段空间的起始地址。

当然,王爽老师的书讲的比较详细,常用的驻留方法,DOS提供了专门的调用(好像是27H吧记不得啦)
asd605499941a 2012-02-06
  • 打赏
  • 举报
回复
第三张图可能看不大清楚
http://hi.csdn.net/attachment/201202/6/10142460_1328533342s5BH.jpg

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧