- 博客(34)
- 收藏
- 关注
原创 汇编语言-中断处理程序及其结构
因为CPU随时都可能检测到中断信息,所以中断处理程序必须常驻内存(一直在内存某段空间中中)中断处理程序的入口地址,即中断向量,必须存储在对应的中断向量表表项中(0000:0000-0000:03FF)。8086支持256个中断(0000:0000~0000:03FF,十进制刚好是1024,即1K的空间),但实际上系统中要处理的中断事件远远没有达到256个。先编译并执行程序,将中断程序写入内存,然后用debug进行除0测试。例子用0:200H来存放中断处理程序。A. 取得中断类型码N;
2023-07-19 21:35:12 438
原创 汇编语言-操作显存数据
B. 显存地址空间:A0000-BFFFF,128K,其中B8000H~BFFFFH共32K的空间是80列 * 25行彩色字符模式第 0页的显示缓冲区。02转为二进制就是:0000 0010,1代表G,也就是green,所以显示为黑底绿色。RGB(111)为白色,RGB(000)为黑色。C. 各类ROM地址空间:C0000-FFFFF,256K。A. 主存储器地址空间:00000-9FFFF,640K。解决:十六进制41就是字符A,占低位字节。G. 编程序,在屏幕的中间显示白底蓝字。
2023-07-17 22:43:30 466
原创 汇编语言-实现除法与乘法
分析:100001D=186A1H,100D=64H,被除数大于16位,需要用2个寄存器,将1放在DX中,将86A1放在AX中,示例3:在内存单元中使用除法,用div计算data段中第一个数据除以第二个数据后的结果,商存放在第3个数据的内存单元中。示例1:计算100 * 10,分析:100和10小于8位(255),可以做8位乘法,注意在debug中默认是十六进制。分析:1001D = 03E9H,100D= 64H,用一个寄存器即可,被除数放在AX中。除数:8位或16位,在寄存器或内存单元中。
2023-07-15 21:28:12 1479
原创 汇编语言-call和ret指令设置栈详解
A. 从下面一幅图看出,CALL指令要转到地址是:0013,位移是:E80500,读作:00 05,下一条指令偏移地址是:0E(076B:000E偏移地址取低位8字节),十六进制相加:05 + 0E = 0013。C. 执行CALL会把IP压栈,即把call下一条指令的偏移地址压栈,从图中可以看出,未执行call指定前,地址最后2位是一个随机数 01 A3,执行压栈后,最后2位是 00 0E。B. 用指令:g 000B 直接执行到 076B:000B处,可以看到IP变成了 000B。
2023-07-15 15:55:25 333
原创 汇编语言-操作符offset
示例2:将s处的一条指令复制到s0处。作用:取得标号的偏移地址。格式:offset 标号。用debug 看结果。
2023-07-15 10:32:29 1948 1
原创 汇编语言-在代码段中定义数据
A. dw:define word,定义一个字,2字节,表示定义字型数据。C. dd:define double 定义一个双字。B. db:define byte,定义一个字节。证明CS段,偏移地址为0000的数据为0123。3 编译链接成t2.exe后查看汇编代码。2 写好代码后,保存为t2.asm。1 定义数据dw,db,dd。证明数据是放在代码段CS中。5 用t命令单步调试查看数据。
2023-07-11 20:44:10 303
原创 汇编语言loop使用实例
Loop示例2:计算ffff:0006字节单元中的数乘以3,结果存储在dx中,先将内存中数据取出,连加3次,相当于乘以3。
2023-07-09 17:17:54 77
原创 汇编语言之jmp使用示例
B. Jmp 某一合法寄存器,表示用寄存器中的值修改IP,jmp ax类似于mov ip,ax。A. Jmp 段地址:偏移地址,表示用指令中给出的段地址修改CS,偏移地址修改IP。1 用jmp命令实现跳转:jmp 段地址:偏移地址。先将CS指向2000H,IP指向000H。用t命令单步执行看效果。用a命令输入汇编指令。
2023-07-09 10:12:33 467
原创 汇编语言之debug用法举例
1 用R命令来查看、改变CPU寄存器内容A. 用R命令查看寄存器内容:rB. 用R命令改变寄存器内容:r 寄存器名2 用D命令查看内存中的内容A. 查看10000H处的内容:d 段地址:偏移地址B. 查看指定范围:d 段地址:起始偏移地址 结束偏移地址3 用E命令改写内存中的内容A. 用E命令改写内存中的内容:e 起始地址 数据1 数据2 …B. 用E命令逐个改写内存内存中的内容:e 起始地址,回车后提示输入新值,按空格修改下一个值。C. 用E命令写入机器码,写法一样。4 用U命令查看汇
2023-07-08 22:09:55 146
原创 汇编语言第三课-输出helloworld
保存为文件hello.asm,注意DOS时代,文件名是8.3规则,8个字符的名字,3个字符的扩展名(不包括.)8086汇编,tc都是这个时代的。即文件名长度不能超过8个字符,扩展名不超过3个字符。”,可直接生成”.obj”文件,省去中间文件的确认环节。语法:masm [*.asm文件名][;2 用masm编译程序。3 用link链接文件。
2023-07-08 12:49:21 605
原创 汇编语言第二课-寄存器
F. Jmp ax用于仅修改IP的内容,格式为“ jmp 某一合法寄存器”,该功能为:用寄存器中的值修改IP。B. add ax,bx 含义:将寄存器bx中的数据送入ax,相当于 ax = ax + bx。A. AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。A. 在十六进制表示的数据后面加H,在二进制表示的数据后面加B,十进制什么也不加。A. mov ax,18含义:将18送入寄存器ax,相当于ax=18。D. CS存放指令的段地址,IP存放指令的偏移地址。
2023-07-07 22:36:11 56
原创 汇编语言第一课-基础知识
C. 寄存器:简单地讲是CPU中可以存储数据的器件,一个CUP中有多个寄存器,AX是其中一个寄存器的代号,BX是另一个寄存器的代号。A. CPU把RAM、ROM相关的存储器看作一个由若干个存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。A. 一个CPU有N根地址线,地址总线宽度为N,最多可以寻址2的N次方个内存单元。C. 其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。A. 汇编指令:机器码的助记符,有对应的机器码。B. 内存:也就是存储器,存放指令与数据。
2023-07-07 16:25:03 48
原创 telnet命令用法
链接失败:如果端口关闭或者无法连接,则显示不能打开到主机的链接,链接失败。语法: telnet IP 端口 或者 telnet 域名 端口。链接成功:则进入telnet页面(全黑的屏),证明端口可用。退出客户端:输入 quit 命令。telnet测试端口命令。
2023-07-05 17:40:46 583 1
原创 C++获取当前DLL所在路径
【代码】C++获取当前DLL所在路径。很多人一直搞不明白DLL的搜索路径,为了验证DLL的搜索路径,于是写了这样的一个DLL,调用后返回它本身路径,以后再也不用纠结了。
2023-06-05 22:44:07 1018 1
原创 有用的网站
技术学习技术学习-w3school技术学习-菜鸟教程技术学习-收费下载资源系统安装系统安装-系统家园系统安装-MSDN itellyou
2023-05-24 16:39:42 52
原创 oracle sql 第一次查询快, 以后查询慢解决
大多数情况下,用oracle, 第一次查询慢, 第二次查询肯定比第二次查询快对吧,但对于这种情况,第一次查询快, 以后查询慢。Cardinality Feedback基数反馈, 是版本11.2中引入的关于SQL 性能优化的新特性,该特性主要针对 统计信息陈旧、无直方图或虽然有直方图但仍基数计算不准确的情况, Cardinality基数的计算直接影响到后续的JOIN COST等重要的成本计算评...
2019-07-31 10:55:09 1938
原创 1. PB9插入OLE控件时直接崩溃解决方法
一、获取TrustedInstaller<受信任的安装人>权限在文件(远程桌面用): %systemroot%\system32\mstscax.dll 上执行:右键->属性->安全->选TrustedInstaller->高级->所有者->将所有者更改为 选择你当前登录的用户名,确定并完成修改二、把 %systemroot%\system3...
2019-07-31 10:06:34 1506 1
C++位运算与进制转换小工具,方便C、C++学习过程中对位的处理,方便观察十六进制地址的变化
2023-07-02
数据导入智能检测.rar
2023-06-05
JsonXml极速一键美化V1.1.exe
2023-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人