- 博客(17)
- 收藏
- 关注
原创 除法div
格式 : div reg 或 div 内存单元 被除数默认放在 DX和AX中如果除数为8位 则 AX当被除数如果除数为16位 则DX*10000+AX 当被除数 DX放高十六位 AX放低十六位除数放在一个reg或者一个内存单元中例题 求100001 / 100 既186A1H / 100 ...
2018-12-17 20:51:08 939
原创 word ptr 按字处理 byte ptr按字节处理
名字 seg:60 +00 DEC 单位 +03 Huawei 年龄 +0C 34 收入 +0E 7000 产品名 +10 PDP 任务 将年龄改为 35 , 将产品名改为 COMmov ax,segmov ds,axmov bx,60mov word ptr [bx].0ch, 35 ...
2018-12-17 20:32:33 3838
原创 用 word ptr 和 byte ptr 指明内存单元的长度
以下的操作 都是字操作mov ax,1 mov bx,ds:[0] mov ds,ax mov ds:[0], ax inc ax add ax,1000以下的操作 都是字节操作mov al,1mov al,blmov al,ds:[0]mov ds:[0], alinc a...
2018-12-17 19:53:56 1099
原创 and or 字符型数据 灵活定位内存地址
and用来抠0 or用来填1al第6位设为0的方法是 and al,10111111B al第7位设为0的方法是 and al,01111111B 用单引号写的字符型数据 'unIX' 在编译的时候 会被转化为相应的ASCII码字母A的ascii码是 41H 也就是65 01000001小写字母的ascii码是61H 0110...
2018-12-17 19:05:02 236
原创 多个段的程序
程序取得空间的方法 1 l加载时提分配空间 2 执行过程中向系统申请(第二种先不讨论) 如果要将 cs:10 ~ cs:2F 当栈用 则SS:SP 要指向栈底 指向 CS:30下面是多个段的程序assume cs:code,ds:data,ss:stackdata segment dw 0123h,0456h,0789h,0abch,0defh,0...
2018-12-17 18:39:25 123
原创 g p [bx] 段前缀 DOS安全区域
在debug分步运行程序时, 如果想快进到CS:0012 前面的跳过 怎么办? g 0012分步运行到循环 想快进到循环结束, p 当然也可以用g 后面的标号 我们想 mov al,[0] 在debug中这样写可以, 但是在编译器中这样写, 会被翻译成mov ax,0于是 方法1 mov bx,0 ...
2018-12-17 18:17:14 140
原创 loop循环 FFFF:0006单元中的内容 乘以3 结果存储在dx中
分析1 FFFF:0006 是一个字节单元 0~255 . dx是两个字节的空间 0~65535. 前者乘以3 不会越界2 以dx为目标结果 先让(dx)=0, 让(ax)=(FFFF6), 再用dx加三次ax3 ax两字节 FFFF:0006 一字节, 如何赋值? 让(ah)=0 ,(al)=(FFFF6) assume cs:abcabc segment ...
2018-12-16 11:12:17 465
原创 loop循环 2^12
如果说求 2^3 的方法是mov ax,2add ax,axadd ax,ax==================================================================那么,如何求2^12? 循环次数用cx表示assume abc:codecode segment mov ax,2 mo...
2018-12-15 20:50:43 271
原创 简洁描述的约定
先看几句代码的解释mov ax,[0] 将一个内存单元(字单元)放入ax , 内存单元长度为2字节, 存放一个字, 段地址是DS 偏移地址是0mov al,[0] 将一个内存单元(字节单元)放入ax , 内存单元长度为1字节, 存放一个字节, 段地址是DS 偏移地址是00表示的是偏移地址 具体长度(类型)由其操作对象决定mov ax,[bx] ...
2018-12-15 11:54:24 327
原创 用debug来执行exe
用debug来执行exe运行dosboxmount c k:\c:debug 1.exe此时 1.exe的内容被加载到内存中 位置是DS 或者说DS+10H :0 (10H 是十进制的16) DS代表的是段地址 换算成字节要乘以16 所以10H的空间是 16*16=256字节这256个字节的空间 叫PSP,是DOS用的 与程序本身没关系 不深究程序正式开始的内存...
2018-12-15 11:11:57 2149
原创 初次汇编程序 masm5
下载masm5.zip 解压到 k: \masm5 (汇编语言编译工具包)下载debug.exe 放在k:下载dosbox 并运行mount c k:\ 把k盘加载到C盘c:debug ...
2018-12-14 21:03:15 991
原创 数据段
汇编的上机测试并非命令行以下代码 要控制CS IP 然后用a命令a之后再逐行输入 再用t命令运行数据段 连续 起始位置为16倍数例如 123B0H ~ 123B9H 就可以是一个数据段 起始位置 123BH 长度10个字节累加前三个单元的方法mov ax,123BHmov ds,axmov al,0mov al,[0]mov al,[1]mov al...
2018-12-12 20:10:52 182
原创 内存单元 地址寄存器
mov指令可以完成两种传送1 将数据直接送入寄存器(CS IP除外) 2 将一个寄存器的内容送入另一个寄存器那么 如何将内存单元中的内容送入一个寄存器中呢?例题 已知内存单元情况 10000H 23 10001H 11 10002H 22 10003H...
2018-12-12 19:56:24 1168
原创 windows 操作系统下 进入debug r d e u t a
下载dosbox下载debug.exe 这个放在某个盘根下 方便点双击dosbox在dos环境下 输入 mount c K:\ c: debug用r命令 显示寄存器 r这时会显示各个寄存器的信息...
2018-12-12 18:10:36 451 2
原创 段式地址 寄存器
8086CPU 它的位数是16位 但是地址总线是20位的于是它用两个16位地址合成来表达一个20位的地址 (用地址加法器加工的)第一个16位叫段地址 第二个16位地址叫偏移地址所以 物理地址= 段地址*16+偏移地址============================================================CPU的工作原理 重点以8086CPU为...
2018-12-11 21:29:25 509
原创 第一章 基础知识
不管是显卡还是网卡 还是什么的, 只要和主板相连的 都被CPU当作内存来对待 用外部主线(简称主线)来连接 CPU还有自己的内部主线, 连接 寄存器 运算器 控制器. 其中的寄存器, 是玩家操控CPU的手段 汇编指令 意义 高级语言 mov ax,18 将18 放入寄存器 AX AX=18 add ax,8...
2018-12-11 20:27:35 111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人