当前位置: 首页 > news >正文

由int指令引发的中断(1301)

本文为《汇编语言程序设计》1301小节例程。点击链接…进课程主页。

示例1:中断7ch的中断例程的编写和安装
任务:编写程序,写7ch的中断例程,完成特定任务
功能:求一个word型数据的平方
参数: (ax)=要计算的数据
返回值:dx, ax中存放结果的高、低16位
程序实现

assume cs:code
code segment
start:mov ax,cs
        mov ds,ax
        mov si,offset sqr 
        mov ax,0
        mov es,ax
        mov di,200h
        mov cx,offset sqrend - offset sqr
        cld 
        rep movsb
        mov ax,0
        mov es,ax
        mov word ptr es:[7ch*4],200h
        mov word ptr es:[7ch*4+2],0
        mov ax,4c00h
        int 21h
  sqr:  mul ax
        iret
sqrend:nop
code ends
end start

测试说明:用下面的程序,通过调用中断求2*3456^2

 assume cs:code
 code segment
 start: mov ax,3456
         int 7ch ; 计算(ax)^2
         add ax,ax
         adc dx, dx
         mov ax,4c00h
         int 21h
 code ends
 end start 

示例2 :中断7ch的中断例程,7ch的中断例程的任务是——
功能:将以 0结尾的字符串转化为大写。
参数: ds:si指向字符串的首地址
程序:

assume cs:code
code segment
start:mov ax,cs
        mov ds,ax
        mov si,offset capital
        mov ax,0
        mov es,ax
        mov di,200h
        mov cx,offset capitalend - offset capital
        cld
        rep movsb

        mov ax,0
        mov es,ax
        mov word ptr es:[7ch*4],200h
        mov word ptr es:[7ch*4+2],0

capital:
        push cx
        push si
change: mov cl,[si]
        mov ch,0
        jcxz ok
        and byte ptr [si],11011111b
        inc si
        jmp short change
ok:  pop si
        pop cx
        iret
capitalend:nop

        mov ax,4c00h
        int 21h
code ends
end start

测试说明:用下面的程序调用中断7ch

assume cs:code
data segment
       db 'conversation',0
data ends
code segment
start:  mov ax,data
       mov ds,ax
       mov si,0
       int 7ch
       mov ax,4c00h
       int 21h
code ends
end start

相关文章:

  • [NOI2005]月下柠檬树[计算几何(simpson)]
  • js-模块化requirejs
  • 海量数据处理:十道面试题与十个海量数据处理方法总结
  • 8Python全栈之路系列之MySQL触发器
  • 二、网络配置文件
  • shell并发处理mysql数据统计备份删除释放
  • HDU 1255 覆盖的面积(线段树+扫描线)
  • cocos2d-x lua 中使用protobuf并对http进行处理
  • SSH防暴力破解的解决方法
  • 第三篇:一个Spark推荐系统引擎的实现
  • 2017 计蒜之道 初赛 第一场 B.阿里天池的新任务
  • C# WebApi 返回JSON
  • 可执行文件的装载
  • 自己定义控件 播放GIF动画
  • WEB服务器-Nginx之虚拟主机、日志、认证及优化
  • [iOS]Core Data浅析一 -- 启用Core Data
  • es6要点
  • Java 多线程编程之:notify 和 wait 用法
  • java2019面试题北京
  • Java到底能干嘛?
  • Spring Boot快速入门(一):Hello Spring Boot
  • springMvc学习笔记(2)
  • SQLServer插入数据
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 动态规划入门(以爬楼梯为例)
  • 复习Javascript专题(四):js中的深浅拷贝
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 一个JAVA程序员成长之路分享
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • ​iOS实时查看App运行日志
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (二)linux使用docker容器运行mysql
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (转)fock函数详解
  • (转)iOS字体
  • (转)德国人的记事本
  • (转)人的集合论——移山之道
  • (转)我也是一只IT小小鸟
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET BackgroundWorker
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .考试倒计时43天!来提分啦!
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • []串口通信 零星笔记
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [C++]C++入门--引用
  • [CISCN2019 华东南赛区]Web4
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [LeetCode][LCR178]训练计划 VI——使用位运算寻找数组中不同的数字
  • [LeetCode]-Pascal's Triangle III 杨辉三角问题
  • [LeetCode]-Spiral Matrix III 螺旋矩阵
  • [luogu P1527]矩阵乘法(矩形k小)
  • [OGRE]看备注学编程(02):打地鼠01-布置场地九只地鼠