注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

用debug做个多任务试验  

2014-01-27 15:27:09|  分类: 方法技巧 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用debug做个多任务试验

                                                                                                                  hcper @ 2012.9.3

按照上次的多任务构想图,前两天用debug成功实现了一个分时多任务测试程序。

在这之前也用过turbo c按照该思路实现没有成功,主要是c下不太好定位地址、跳转等。

有了这次的debug试验后估计改用c,又多了成功的信心。

 

首先,我对空间以及功能做了一个划分(数据都是十六进制)。

  1. 初始程序位于100 长度100,功能为安装中断,初始化任务的断点上下文等;

  2. 中断程序位于200 长度100,功能为保存当前断点上下文以及载入下一个断点上下文;

  3. 与任务无关的全局数据位于300 ~1000-1;

  4. 任务1位于位置1000 长度1000的内存,1400开始放任务1数据,18fe为任务1堆栈指针,功能为输出A~Z;

  5. 任务2位于位置2000 长度1000的内存;2400开始放任务2数据,28fe为任务2堆栈指针,功能为输出0~9;

  6. 任务3位于位置3000 长度1000的内存;3400开始放任务3数据,38fe为任务3堆栈指针,功能为输出a~z;

 

按以上布局debug编程如下文本文件tk.txt

在xp的cmd下,输入debug <tk.txt即可生成测试程序task.com

文本文件tk.txt内容:

f 100 l 4000 0
a100
cli
xor ax,ax
mov es,ax
es:
mov word ptr [20],200
es:
mov word ptr [22],cs
ds:
mov word ptr [300],0
nop
mov word ptr [400],18fe
mov word ptr [402],cs
nop
mov word ptr [404],28e2
mov word ptr [406],cs
mov word ptr [28e2],cs
mov word ptr [28e4],cs
mov word ptr [28e6],cs
mov word ptr [28ee],28f0
mov word ptr [28f8],2000
mov word ptr [28fa],cs
mov word ptr [28fc],0202
nop
mov word ptr [408],38e2
mov word ptr [40a],cs
mov word ptr [38e2],cs
mov word ptr [38e4],cs
mov word ptr [38e6],cs
mov word ptr [38ee],38f0
mov word ptr [38f8],3000
mov word ptr [38fa],cs
mov word ptr [38fc],0202
mov ax,cs
mov ss,ax
mov sp,18fe
sti
nop
nop
jmp 1000

 

a200
cli
push ax
push bx
push cx
push dx
push sp
push bp
push si
push di
push ds
push es
push ss
mov ax,cs
mov ds,ax
mov bx,word ptr [300]
mov word ptr [bx][400],sp
mov word ptr [bx][402],ss
add bx,4
cmp bx,c
jb 0227
mov bx,0
mov word ptr [300],bx
mov ss,word ptr [bx][402]
mov sp,word ptr [bx][400]
pop ss
pop es
pop ds
pop di
pop si
pop bp
pop sp
pop dx
pop cx
pop bx
mov al,20
out 20,al
pop ax
sti
iret

 

e1400
41 20
a1000
mov ax,cs
mov ds,ax
cli
mov ss,ax
mov sp,18fe
sti
mov ax, word ptr [1400]
inc al
cmp al,5b
jb 1016
mov al,41
mov word ptr [1400],ax
mov bx,b800
mov es,bx
es:
mov [0000],ax
nop
nop
jmp 100b

 

e2400
30 20
a2000
mov ax,cs
mov ds,ax
cli
mov ss,ax
mov sp,28fe
sti
mov ax, word ptr [2400]
inc al
cmp al,3A
jb 2016
mov al,30
mov word ptr [2400],ax
mov bx,b800
mov es,bx
es:
mov [0002],ax
nop
nop
jmp 200b

 

e3400
61 20
a3000
mov ax,cs
mov ds,ax
cli
mov ss,ax
mov sp,38fe
sti
mov ax, word ptr [3400]
inc al
cmp al,7b
jb 3016
mov al,61
mov word ptr [3400],ax
mov bx,b800
mov es,bx
es:
mov [0004],ax
nop
nop
jmp 300b

 

rcx
4000
n task.com
w
q

 

  评论这张
 
阅读(187)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017