随笔分类 - 汇编--16位汇编
《汇编语言》(王爽)课后答案
摘要:因为战队新人的需要,再者因为自己当时学习的时候,对照答案都是东拼西凑,因此总结了自己学习笔记的答案,希望提供大家一些帮助。这里给出目录,大家可以直接上链接下载:https://wwa.lanzoui.com/i81ejsf TOC \o "1-5" \h \z \u 第二章 寄存器... PAGER
《汇编语言》课程设计2
摘要:具体的在注释中都说明了。 jz指令:https://zhidao.baidu.com/question/564008138.html int 16的1号程序:https://zhidao.baidu.com/question/511189643.html 总结 汇编的难度并不大,我认为在有编程的基础
汇编学习--第十九天
摘要:17.4 应用int 13h中断例程对磁盘进行读写 3.5英寸软盘:2面,80磁道/面,18扇区/磁道,512字节/扇区,大小:1440KB≈1.44MB 面号,磁道号从0开始,扇区号从1开始。 将当前屏幕的内容保存在磁盘上 试验17 编写包含多个功能子程序的中断例程 测试程序 中断例程
汇编学习--第十八天
摘要:16.4 程序入口地址的直接定址表 实验 16编写包含多个功能子程序的中断例程。 在这道题中,因为table...最终会被范围为cs:N[si]这种形式存储,当我们转移程序到0:200h处时,CS和IP改变,但是程序中table处没有改变,所以会引发定址错误。 测试程序 中断例程 转自百度:http
汇编学习--第十七天
摘要:检测点15.1 (1) pushf call dword ptr ds:[0] (2) 设置int 9中断例程的地址的指令有两个部分: 在执行指令期间可能发生键盘中断,引发错误的地址执行,也就是IF寄存器可能为1,所以只要我们在执行这两段指令之间,令IF=0,即可保证程序正确。 15.5 安装新的i
汇编学习--第十六天
摘要:第十四章 端口 CPU可以直接读写数据的地方: 14.1 端口的读写 对8位端口进行读写,用al保存数据,对16位端口进行读写,用ax保存数据 对0~255以内端口进行读写时 对256~65535端口进行读写时,需要用dx保存端口号 14.2 CMOS RAM 70h地址端口:存放要访问的CMOS
汇编学习--第十五天
摘要:13.3 对int,iret和栈的深入理解 检测点13.1 (1)这道我认为主要是判断 这里是修改IP地址,即向前跳转距离,也即bx的范围。bx为十六位寄存器,范围在-32768~32767,即最大转移位移为32768 (2) 测试程序: 中断例程: 13.4 BIOS和DOS所提供的中断例程 通常
汇编学习--第十四天
摘要:第十二章 内中断 12.1 内中断的产生 发生情况: 使用中断类型码的数据来标识中断信息的来源。 8086CPU中的中断类型码: 12.2 中断处理程序 12.3 中断向量表 定义:就是中断处理程序入口地址的列表 中断向量表存放着256个中断源所对应的中断处理程序的入口,8086CPU从0000:0
汇编学习--第十三天
摘要:11.12 标志寄存器在Debug中的表示 OF overflow flag 溢出标志 操作数超出机器能表示的范围表示溢出,溢出时为1. SF sign Flag 符号标志 记录运算结果的符号,结果负时为1. ZF zero flag 零标志 运算结果等于0时为1,否则为0. CF carry fl
汇编学习--第十二天
摘要:第十一章 标志寄存器 注意!:指令集中,add,sub,mul,div,inc,or,and等逻辑或算术运算影响标志寄存器,其他的mov,push,pop等指令对标志寄存器没有影响。 11.1 ZF标志 判断指令执行之后,结果是否为0,为0,ZF=1,不为0,ZF=0。 11.2 PF标志 判断指令
汇编学习--第十一天
摘要:3.数值显示 实际上,方法就是,数值除10,取余数,就得到数值的每一位,再观察得到,数字xH(x=0,1...9)对应,十进制数字30H+xH 让显示这些数值,实际上就是上个程序,储存位置变成了显示缓冲区 这个程序中,s0部分对应着dtoc子程序(十六进制转换为十进制字符),show_str子程序对
汇编学习--第十天
摘要:10.5 转移地址在寄存器中的call指令 call 16位reg 相当于执行 push IP jmp 标号 检测点 10.4 AX=000BH 这个程序稍微修改一下,就很清晰了。 10.6 转移地址在内存中的call指令 call word ptr 内存单元地址 相当于进行 push IP jmp
汇编学习--第九天
摘要:实验9 根据材料编程 注意: 在做第十章课后题时,发现个问题,最上面红框和下面两个红框,对偏移地址000h的叫法不同,我根据实际显示,es:000h叫0行0列(这一行不会在显示器上显示) 要理解材料中的几个点: 1.每行可以表示80个字符,160字节 2.每行的偏移地址规律 起始偏移地址:行数 *
汇编学习--第八天
摘要:第九章 转移指令的原理 8086CPU的转移行为分类: 第一种分类: 第二种分类 转移指令分类: 9.1 操作符offset 获取标号的偏移地址 问题 9.1 mov ax,cs:[si] mov cs:[di],ax nop的机器码占一个字节 9.2 jmp指令 9.3 依据位移进行转移的jmp指
汇编学习--第七天
摘要:1:数据寄存器,一般称之为通用寄存器组 8086 有8个8位数据寄存器, 这些8位寄存器可分别组成16位寄存器: AH&AL=AX:累加寄存器,常用于运算; BH&BL=BX:基址寄存器,常用于地址索引; CH&CL=CX:计数寄存器,常用于计数; DH&DL=DX:数据寄存器,常用于数据传递。 2
汇编学习--第六天
摘要:(5) 这道题的寄存器会不够,我们采取入栈出栈的方式来反复利用寄存器,这里的1,2,3定义的db,应该是"define byte",字节型数据 (6) 先将a段数据入栈,再出栈,储存到b段对于位置 DS=075AH,所以程序入口地址在076AH,根据程序的代码,我们知道先a段,再b段,a段占16字,
汇编学习--第五天
摘要:第6章 包含多个段的程序 程序取得所需空间有两种方式: 1.加载程序的时候为程序分配 2.程序在执行过程中向系统申请 6.1 在代码段中使用数据 ** "dw"--"define word"定义字型数据 当我们使用u指令查看程序时 前面一堆我们不知道的代码,这是在程序中的代码段,这个代码段在这里是由
汇编学习--第四天
摘要:5.3 在Debug中跟踪用loop指令实现的循环程序 在汇编程序中,数据不能以字母开头,所以大于9FFFH的十六进制数据都要在前面加一个0 因为DS=075AH,所以我们可以知道程序地址在DS+10H=076AH 程序的第一条指令指令为CS:IP 显示出DS:0006H地址储存的数据 g “偏移地
汇编学习--第三天
摘要:4.1 一个源程序从写出到执行的过程 汇编语言源程序包含两种指令: 1.汇编指令 2.伪指令 汇编指令会被编译为机器指令,被CPU执行 伪指令不会,会被编译器执行 segment和ends的作用是定义一个段 end伪指令标记整个程序的结束 assume将有特定用途的段和相关的段寄存器关联起来 程序最
汇编学习--第二天
摘要:第三章 寄存器 3.4 问题3.5 检测点 3.1 (1) 段地址:偏移地址只是表示物理地址的方式,我们查看数据地址只看 段地址*16+偏移地址 的结果,例如0110:0000和0000:1100就是同一地址,数据相同。 (2) 第一问:执行序列: 1)mov ax,6622h 2)jmp 0ff0