BASIC语言调用汇编语言的技巧
11-08 12:39:07软件技巧
浏览次数:557次
标签:软件技巧大全,http://www.duosi8.com
BASIC语言调用汇编语言的技巧,
一、内存分配问题
在运行高级语言程序时,通常不需要考虑程序的内存分配问题,BASIC语言的解释程序和连接程序会自动找到适当位置来存放程序。但把汇编语言程序加到BASIC程序中时,情况就比较复杂了。必须通过一些技巧来确定汇编语言子程序在内存中的存放位置,并且把这个位置告诉BASIC程序。
二、控制转移问题
在BASIC语言中,可以通过USR或CALL语句,把控制转移到汇编语言子程序,但是调用程序必须知道被调用的汇编语言子程序放在什么地方,并把存放地址写入BASIC程序中。
三、变元传送问题:
BASIC程序与汇编语言之间的信息交换通过变元的传递来实现,变元通常以数值或地址的形式表示。当用USR调用汇编语言子程序时,只能传送或回送一个变元;而CALL语句可以在调用程序和被调用程序之间传送多个变元。
下面举例说明如何解决以上所述的问题。
一、编制一小汇编程序(删除一个文件)
* name del_file
cseg segment
assume cs:cseg
deil proc far 供BASIC调用
push bp
mov bp,sp
mov di,[bp+08h] ;传递功能号
; 参数
mov ah, [di]
cmp ah,02h
ja def
mov ah,[di]
mov di,[bp+06h] ; 传递字符
;串参数
mov dx,1[di]
mov c1,[di]
mov si,dx
xor ch,ch
add si,cx
mov byte ptr[si],00h
add ah,40h
int 21h
mov byte ptr[si],24h
def: pop bp
ret 04h
defil endp
cseg ends
end
二、汇编、连接源程序
masm del_file.asm
link del_file/h
这样就把汇编语言子程序放在高地址。
三、用DEBUG装入del_file.exe文件
-r记住cs:3fdf代码段地址
ip:0000位移量
cx:xxxx文件长度,字节数
四、不退出DEBUG,再装入basic.exe解释程序
-n basic.exe
-l
-g
ok def seg=&h3df
ok save "del_file.bin",0,&hxxxx文件长
五、编写basic程序,调用汇编语言,但必须注意内存分配,在basic程序中要定义段地址:
def seg=&h1800
block "del_file.bin",0
del_file=0
10 cls
20 input"请输入被删除文件的名字:",d$
30 x%=1
40 def seg=&h1800
50 bload"del_file.bin",0
60 del_file=0
70 call del_file(x%,d$)
80 print"删除文件结束"
90 for i=1 to 2500:next i
100 system
这样,就可以把汇编语言子程序放在basic工作区内,解决了上述的三个问题。 (辽宁 石宝臣)
一、内存分配问题
在运行高级语言程序时,通常不需要考虑程序的内存分配问题,BASIC语言的解释程序和连接程序会自动找到适当位置来存放程序。但把汇编语言程序加到BASIC程序中时,情况就比较复杂了。必须通过一些技巧来确定汇编语言子程序在内存中的存放位置,并且把这个位置告诉BASIC程序。
二、控制转移问题
在BASIC语言中,可以通过USR或CALL语句,把控制转移到汇编语言子程序,但是调用程序必须知道被调用的汇编语言子程序放在什么地方,并把存放地址写入BASIC程序中。
三、变元传送问题:
BASIC程序与汇编语言之间的信息交换通过变元的传递来实现,变元通常以数值或地址的形式表示。当用USR调用汇编语言子程序时,只能传送或回送一个变元;而CALL语句可以在调用程序和被调用程序之间传送多个变元。
下面举例说明如何解决以上所述的问题。
一、编制一小汇编程序(删除一个文件)
* name del_file
cseg segment
assume cs:cseg
deil proc far 供BASIC调用
push bp
mov bp,sp
mov di,[bp+08h] ;传递功能号
; 参数
mov ah, [di]
cmp ah,02h
ja def
mov ah,[di]
mov di,[bp+06h] ; 传递字符
;串参数
mov dx,1[di]
mov c1,[di]
mov si,dx
xor ch,ch
add si,cx
mov byte ptr[si],00h
add ah,40h
int 21h
mov byte ptr[si],24h
def: pop bp
ret 04h
defil endp
cseg ends
end
二、汇编、连接源程序
masm del_file.asm
link del_file/h
这样就把汇编语言子程序放在高地址。
三、用DEBUG装入del_file.exe文件
-r记住cs:3fdf代码段地址
ip:0000位移量
cx:xxxx文件长度,字节数
四、不退出DEBUG,再装入basic.exe解释程序
-n basic.exe
-l
-g
ok def seg=&h3df
ok save "del_file.bin",0,&hxxxx文件长
五、编写basic程序,调用汇编语言,但必须注意内存分配,在basic程序中要定义段地址:
def seg=&h1800
block "del_file.bin",0
del_file=0
10 cls
20 input"请输入被删除文件的名字:",d$
30 x%=1
40 def seg=&h1800
50 bload"del_file.bin",0
60 del_file=0
70 call del_file(x%,d$)
80 print"删除文件结束"
90 for i=1 to 2500:next i
100 system
这样,就可以把汇编语言子程序放在basic工作区内,解决了上述的三个问题。 (辽宁 石宝臣)
,BASIC语言调用汇编语言的技巧
- ·上一篇:手动删除“添加或删除程序”中的卸载信息方法
- ·下一篇:无导入DV视频功能按钮
《BASIC语言调用汇编语言的技巧》相关文章
- › BASIC语言调用汇编语言的技巧
- › BASIC练习题
- › BASIC语言的程序调试方法
- › 使用BASIC的集成环境
- › 有关BASIC的语句行错误
- › BASIC疑难详解
- › 用BASIC语言解决逻辑推理题目
- › 用BASIC语言实现的动画技术举例
- › Quick Basic 4.5自开发功能应用两例
- › 用文字处理软件编辑、修改BASIC源程序
- › 如何纠正BASIC编程中的错误
- › Vista Home Basic 和 Home Premium 的分别?
- 在百度中搜索相关文章:BASIC语言调用汇编语言的技巧
tag: 技巧 软件技巧,软件技巧大全,电脑学习 - 软件技巧
热门推荐
- · 为何QQ总弹出安全登录验证2则
- · 多媒体升级时常见故障的处理
- · 利用硬盘驱动器号制作防扩散FOXPRO程序
- · 高速视频转换借力CUDA
- · 在KMPlayer中手动切换解码器
- · 如何突破IP加MAC绑定
- · 如何让ACDSee成为默认的图片浏览器
- · SnagIt连续抓以多个窗口
- · SnagIt直接截取灰度图片
- · Nero快速制作精美的光盘封面
- · 完美卸载XP快速卸载顽固软件
- · VoptXP测试驱动器性能
- · VirturlDriver让虚拟光驱开机时自动加载
- · 通过递归调用来搜索文件
- · AutoCAD复制粘贴图纸导致死机
- · 监控软件导致QQ无法登录
- · 提高WindowsXP启动速度的方法
- · Office 2007无法正常卸载怎么办
- · 如何用批处理一次建立或删除多个目录
- · 教你Windows百毒不侵的13个妙招
- · ATI显卡在线看电影时花屏应该如何解决