汇编学习(八)8086汇编拾遗 (7)

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx 政府科技管理者如何提升科技成果转化项目进场交易的备案效率? 立即下载
int 中断指令

使用方式:

int n.  n 为中断类型码,它的功能是引发中断,n 为引发的中断号。

先写一个中断程序的例子吧,安装中断7ch 中断例程,计算一个字型数的平方。
assume cs:code code segment start: mov ax,cs mov ds,ax mov si,offset sets mov di,200h mov ax,0 mov es,ax mov cx,offset sets0 - offset sets 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 sets: mul ax iret sets0:nop code ends end start 

再来一个转换字符串的中断。 功能:将一个全是子母,以0结尾的字符串转换为大写。

assume cs:code

code segment

    start:
        mov ah,2
        mov bh,0
        mov dh,5
        mov dl,12
        int 10h
        
        mov ah,9
        mov al,'a'
        mov bl,11001010b
        mov bh,0
        mov cx,3
        int 10h


        mov ax,4c00h
        int 21h

code ends
end start

使用int 模拟 loop

assume cs:code

code segment
    start:
        mov ax,cs
        mov ds,ax
        mov ax,0
        mov es,ax
        mov si,200h
        mov di,offset se

        mov cx,offset se0 - offset se

        rep movsb

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

        mov ax,4c00h
        int 21h

    se:
        push bp
        mov bp,sp
        dec cx
        jcxz ll
        add [bp+2],bx
    ll:
        pop bp
        iret

    se0:
        nop

code ends
end start

编写7CH中断实现jmp near ptr s   功能:

assume cs:code

data segment

    db 'conversion',0

data ends

code segment

    start:
        mov ax,cs
        mov ds,ax
        mov si,offset se
        mov ax,0
        mov es,ax
        mov di,200h
        mov cx,offset se0 - offset se 

        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,data
        mov ds,ax
        mov si,0
        mov ax,0b800h
        mov es,ax
        mov di,12*160
      s:
        cmp byte ptr [si],0
        je ok
        mov al,[si]
        mov es:[di],al
        inc si
        add di,2
        mov bx,offset s - offset ok
        int 7ch
     ok:
        mov ax,4c00h
        int 21h


    se:
        push bp
        mov  bp,sp
        add  [bp+2],bx
        pop bp
        iret

    se0:nop

code ends
end start

编写并安装7ch中断,直到0结束的字符串

assume cs:code

data segment

    db 'weclome to linux world!',0

data ends

code segment

    start:
        mov ax,cs                ;添加中断代码
        mov ds,ax
        
        mov si,offset se 
        mov di,200h

        mov ax,0
        mov es,ax
        mov cx,offset se0 - offset se 
        
        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 dh,10                ;测试代码
        mov dl,10
        mov cl,2
        mov ax,data
        mov ds,ax
        mov si,0
        int 7ch



        mov ax,4c00h
        int 21h

    se:
        mov al,160           ;设置es:0b800h         
        mul dh
        add dl,dl
        mov dh,0
        add ax,dx
        mov di,ax
        mov ax,0b800h
        mov es,ax
      s:
        mov al,ds:[si]       ;打印字符
        mov ah,0
        cmp ax,0
        je f
        mov ah,cl 
        mov es:[di],ax
        inc si
        inc di
        inc di
        jmp s
      f:
        iret

    se0:nop


code ends
end start

编写7C 中断,打印80个!

assume cs:code

code segment

    start:
        mov ax,cs                       ;安装中断
        mov ds,ax
        mov si,offset lp

        mov ax,0
        mov es,ax
        mov di,200h

        mov cx,offset lpend - offset lp
        cld
        rep movsb

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

        mov ax,0b800h                   ;设置es
        mov es,ax
        mov di,160*12
        mov bx,offset s -offset se 
        mov cx,80
        s:
            mov byte ptr es:[di],'!'
            add di,2
            int 7ch
        se:
            nop

        mov ax,4c00h
        int 21h

        lp:
            push bp                     ;循环 
            dec cx
            jcxz f
            mov bp,sp
            add [bp+2],bx
        f:
            pop bp
            iret
        lpend:nop

code ends
end start

 

查看原文:http://zmrlinux.com/2016/05/31/%e6%b1%87%e7%bc%96%e5%ad%a6%e4%b9%a0%ef%bc%88%e5%85%ab%ef%bc%898086%e6%b1%87%e7%bc%96%e6%8b%be%e9%81%97-7/

双翌视觉系统配合机械手大视野定位案例(单目标带角度抓取) 一、定位原理概述 1.系统构架 视觉定位系统采用正向打光方式,光源在机械手上方,CCD从上往下拍摄,进行图像分析定位。相机将计算出的像素坐标转换为机械手的物理坐标,视觉软件与机械手进行网口通讯,将视野内物料的物理坐标发送给机械手,机械手抓取物料放在指定工位。 2.相机标定概述 系统采用宫格标定确定像素坐标和物理坐标一一对应关系,同时利用3点或者多点旋转标定求出旋转中心 系统采用宫格标定,自定义行列数和间距及旋转角度,通过机械手发送的当... 阅读详情

相关推荐

INS/伪距组合导航(1)

星间单差GNSS/INS伪距紧组合

u014430081的博客 875

11_int指令

int指令 int指令: int指令的执行过程: 1,取中断类型码n 2,标志寄存器入栈,IF = 0, TF = 0 3,CS,IP入栈 4,IP执行内存中断表的位置 从此处转去执行n号中断的中断处理程序 编写供应用程序调用的中断例程: eg:编写,安装中断7ch的中断例程,实现求--word型数据的平方 功能:求--word型数据的平方 参数:ax 要计算的数据 返回值:dx,ax中存放结果的高16位和低16位 应用举例:求2 * 3

yuluo的博客 617

Prometheus+Grafana部署及企业微信邮件/群消息告警通知配置

本文详细介绍了在Ubuntu 22.04系统上部署普罗米修斯监控系统的完整流程。首先说明了系统配置要求(2核CPU、4G内存、100G硬盘),然后分步骤指导下载、解压和安装普罗米修斯服务。文章包含配置prometheus.yml文件、启动服务、设置系统服务等关键操作,并提供了访问9090端口验证服务的方法。接着介绍了通过node_exporter监控Linux主机的配置过程,包括安装、启动服务和修改普罗米修斯配置文件添加监控项。最后还涉及了mysqld_exporter的部署流程,用于监控MySQL数据库服

m0_58761900的博客 1640

汇编学习(一)8086汇编拾遗(1)

前言 汇编学习这个系列是我一直想要开启的一个学习模块,但是因为种种原因一直没有开始做这件事,正好我们开始准备做操作系统,我们必须出发了,之前的一些事情只能让它飞向天边了。 基础概念 指令和数据,在内存和硬盘上,指令和数据没有什么区别,即使是汇编指令也是以二进制的存在于内存之中的。 cpu 对存储器的读写必须有以下的几点信息: @存储单元的地址信息 @器件的选择,读或者写的指

密码小仙女 520

TestFlight分发测试app,提示无法安装 所请求的App不可用或者不存在

TestFlight分发测试app,提示无法安装 所请求的App不可用或者不存在

天穹云原生 9171

AC7811无感FOC实战:从开环到闭环的电机控制调试全记录

本文详细记录了基于国产AC7811芯片实现无感FOC电机控制的全过程。从硬件软件环境搭建、开环I/F启动调试,到滑模观测器参数整定,再到平滑切入闭环及双环PID调节,提供了完整的实战步骤与参数调试心法。文章重点分享了无感控制从开环到闭环切换的关键技巧与常见问题排查清单,为工程师提供了一份避坑指南。

kotlin6android的博客 713

汇编学习(十三)8086汇编拾遗 (12)

王爽的《汇编语言》虽然结束了,但是我们的思考还要继续,结下来就要进入X86汇编语言的学习了,但是思考还要继续。 指令拾遗,其实指令还有太多,这里只能写一些有限的: xchg: 交换指令,寄存器和内存变量之间的内容的交换指令,两个交换的数据类型要相同。 需要注意的4个地方: 1.不能同时为内存操作数 2.任何一个操作数不能为段寄存器 3.任何一个操作数不能为立即数 4.两个操作数...

密码小仙女 489

SAP中错记虚拟利润中心的调整,冲销处理实例

我非CO专业顾问。工作中遇到的问题,也会找资料,分析,测试。有时这个过程会拿到结果,解决问题。遂将过程记录下来备查。读者请谨慎参考!EC-PCA: 利润中心记账流程_9ke0-优快云博客。

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 1796

汇编学习(一)8086汇编拾遗(2)

寻址方式 立即寻址 mov ax,3069H 寄存器寻址 mov al,BH 直接寻址 mov ax,[2000H] 寄存器间接寻址 mov ax,[bx] 寄存器相对寻址 mov ax,cont[si] 基址变址寻址 mov ax,[bp][di] 相对基址变址寻址 mov ax,mask[bx...

密码小仙女 395

46、聚类算法在智能交通数据分析中的应用

本文探讨了聚类算法在智能交通数据分析中的应用,介绍了K-均值算法、K-中心点算法和基于模型的聚类算法的基本原理及特点,并结合实际交通数据讨论了其应用场景与挑战。通过聚类分析,能够从海量交通数据中发现隐藏模式,为交通管理和规划提供科学依据。文章还展示了具体的案例分析和实现流程,为未来智能交通系统的发展提供了参考。

zz67890的博客 134

3D Slicer学习记录(4)-PLUSapp连接双目相机Intel Realsense

plusapp是基于openIGTLink协议的免费的开源库和应用程序API接口,用于数据采集、预处理、校准和实时流成像、位置跟踪和其他传感器数据。这里以intel realsense双目相机为例详细的演示整个图像流导入到3D Slicer的流程。

weixin_39090239的博客 1346

X86与X64 汇编学习——调用汇编函数

本节说明函数调用相关: 函数调用必须被保留的内容: EAX 用于保存输出值,可能在返回前被修改 EBX 指出全局偏移表,必须保留 ECX 保证在函数中可用 EDX 保证在函数中可用 ESP 指向心得堆栈地址,必须保留 EBP 堆栈基址指针,必须保留 EDI ...

密码小仙女 1492

Android 12.0 kenel中修改rom系统内部存储的大小

在12.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,由于在产品后续订单中,有些产品是出口的,但是硬件方面已经定板,时间比较仓促,所以 就需要软件方面在rom内部存储的大小方面作假,修改rom真实的大小容量,所以就需要在kenel驱动部分来修改这部分的值最好了,接下来分析下计算rom容量的 相关代码,然后做出相关的修改,来实现功能

安卓兼职framework和app工程师的博客 1678

汇编学习(三) X86汇编基础(一)

X86汇编杂记1 x86 基础知识 1.%eax %ebx %ecx %edi %esi 通用寄存器 2.%ebp %esp %eip %eflags 几个专有寄存器 $:使用立即寻址方式 我们对比8086寄存器可以发现,其X86 还是有很多8086的影子的。 int $0x80 中断,请求终止程序。 注释风格: x86 : 以“#”开头 808...

密码小仙女 1023

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

汇编语言基础4

汇编语言基础3 一个包含多个段的程序: ds寄存器一般存放数据段的段地址,cs:ip这两个寄存器一般存放的是代段的具体地址,es 段一个可以使用的临时存放变量的寄存器,SS:SP一般存放的就是栈的具体地址,前者位栈的段地址后者为栈的偏移地址。一般程序都有代码段,数据段,文本段,我们希望CPU 从代码段读取指令,通过使用栈来对数据段的数据进行修改,那么程序的本质就能够体现了。 这个程序

密码小仙女 910

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

汇编语言基础2

汇编语言基础(寄存器) 首先一个CPU 的结构一般包含运算器,控制器,寄存器,高速缓存,总线等等他们的功能简要来说就是: 1.运算器进行信息处理 2.寄存器进行信息处理 3.控制器控制个种器件进行工作 4.内部总线连接各种器件 不同的CPU ,寄存器的个数,结构是不相同的。8086有14个寄存器每一个都有一个名字:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS

密码小仙女 828

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

汇编学习(十七)X86汇编学习 (4) GDT

从今天起我们就进入保护模式的学习了,不过考试,课设也随之而来。所以基本规划下,接下来的学习计划吧。距离放暑假还有4周,首先是《X86实模式,保护模式这本书》,还有8章,基本上4~5天一章吧,期间还有《并行程序设计导论》《并行编程模式》着两本,都很薄。基本最多看这么多了。但是我们还有数电,算法,这些东西要复习。最后4周就这么办吧。 保护模式概念: 保护模式,是一种80286系列和之后的x86...

密码小仙女 826

汇编语言基础1

汇编语言基础1             因为以后应该是要看内核相关的东西,内核百分之二十是用汇编语言写的,不会汇编显然不行,要学的东西还是真多,汇编只是正是走向内核之路的开始,万事开头难,还真是难,下午下载了2.6 和 4.04 的代码显然还是看不懂,那就从基础看把,我至少先搞明白内核是个什么东西,就选择了《linux内核设计与实践》这本书偏向理论,不过现阶段我就是看看内核是什么东西,然后在去看

密码小仙女 742

汇编学习(十五)X86汇编学习 (2)MBR为例

我们从《汇编语言》的坑爬出来,又进入到了《实模式到保护模式》的坑中。 MBR : 计算机开机加电自检之后,BIOS 就就尝试读取0面0道1扇区的内容,传统上就是主引导扇区MBR共512B 以0x55 和 0xAA结尾。 然后将启动代码加载到逻辑地址:0x0000:0x7c00 处就是0x07c00处。 代码如下: mov ax,0xb800 ;指向文本模式的显示缓冲区 mov es...

密码小仙女 725

汇编语言基础3

汇编语言基础3 [BX] 和 loop 指令:         ds:段寄存器 首先例如: mov ax,[0]                    这句的意思是把cx:[0000]的内容移动到寄存器ax中。                 [bx]同样也表示一个内存单元,它的偏移地址在bx处                mov ax,[bx]        将一个内存单元的内

密码小仙女 715

汇编学习(十)8086汇编拾遗 (9)

8086 外中断 可屏蔽中断: 可屏蔽中断是CPU可以不响应的中断。CPU是否响应屏蔽中断,需要看标志寄存器IF的位置。当CPU检测到可屏蔽中断信息的时候如果IF = 1.则CPU在执行完成当前指令后响应中断,引发中断过程;如果IF = 0,则不响应。 如果在中断处理程序中需要处理可屏蔽中断,可以用指令将IF置1,8086CPU提供的设置IF指令如下: sti : 设置IF = 1 c...

密码小仙女 685

汇编解决的第一个小问题

一朝掌握汇编语言,终生理解计算机系统。 --题记 现在计算机发展及其迅速,我们能学可学的东西很多,汇编语言已经不再像以前那样必要,但是底层的东西变化却很慢,学习以下我觉得是不吃亏的,尤其是以后立志走C/C++ 路线的程序员。 一句话:我学的就是情怀! 昨天学妹问我一个问题,很简单。是这样的。 #include<stdio.h> int main(){ char a; s...

密码小仙女 668

ParalleX OS 设计与实现 一致性理念设计

基于微内核的多核操作系统设计V0.1 概要 这是一个基于微内核的能体现多核调度的试验性质操作系统。以“一切为消息”为一致性理念。希望将消息传递模块抽象出来成为一个单独的进程。将调度和消息传递分来。整个操作系统由进程管理模块,消息传递模块,内存管理模块,信息调度模块,文件系统模块组成。每一个模块相当于是自己功能的封装。模块之间相互独立。...

密码小仙女 604

汇编学习(十四)X86汇编学习 (1)

我们首先来学习下几个我们接下来学习的几个重要的工具 gdb: UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一个小例子: /**********************...

密码小仙女 569

汇编学习(六)8086汇编拾遗 (5)

8086 标志寄存器 8086 的最后一个比较重要的寄存器 标志寄存器 状态寄存器的三种作用: @用来存储相关指令的某些执行结果 @用来为CPU执行相关指令提供行为依据 @用来控制CPU的相关工作方式 ZF标志: 记录相关指令执行后,其结果是否为0,结果为0,zf = 1,不为0 ,zf = 0. PF标志: 奇偶效验寄存器,记录相关指令执行后,其中所有位中1 的个数是否为偶数...

密码小仙女 524

汇编学习(四)8086汇编拾遗 (3)

jcxz 指令:条件指令,所有的转移都是短转移,IP 的修改范围是-128~127 之间。 eg. 查找内存2000H段中的一个值为0的字节,然后将它的偏移地址存储在dx 中。 assume cs:code code segment start: mov ax,2000H mov ds,ax mov bx,0 S:mov ch,0 mov cl,ds:[bx] jcxz OK inc ...

密码小仙女 490
上一篇: 汇编解决的第一个小问题
下一篇: 汇编学习(九)8086汇编拾遗 (8)
zmrlinux
博客等级 码龄12年 409粉丝 327原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值