摘要:
实验内容: 1. 补全程序 t1.asm,完成在屏幕上输出内存单元中的十进制两位数。 add cx, 30H,表示把cx中的余数(数字)转变成字符,因为,‘0’的ASCII码为30H 2. 补全程序 t2.asm,完成在屏幕上输出 data 段定义的 5 个十进制两位数,数据和数据之间以空格间隔。 阅读全文
摘要:
本章开始是有关编译程序的知识。 1.源程序 伪指令: segment和ends成对使用,定义一个段,分别表示开始和结束。 codesg是段标识,可自定义,最后将被编译masm、连接link为段地址。 end是汇编结束标记。 assume含义为假设。假设某一寄存器和程序中某一个被定义的段相关联。 (2 阅读全文
摘要:
1.内存中字的存储 8086CPU中的字的存储用的是小端法,即高高低低,用两个地址连续的内存单元:高位字节存在高地址单元,低字节存在低地址。 2.DS寄存器 8086CPU自动取ds中的数据为内存单元的段地址,并且ds的值并不能直接赋给,要先将值赋给一个一般寄存器进行中转,在传入ds中。 3.mov 阅读全文
摘要:
实验内容: 1.将老师给的程序框架编译、连接后利用反汇编u查看代码长度,利用g命令将程序运行至在mov ax,4c00h结束语句前。 (1)发现data中的数据被改为代码中指定的数据。 (2)程序返回前,cs=076C、ss=076B、ds=076A。 (3)程序运行后,设code段地址为X,则da 阅读全文
摘要:
1.综合使用 loop,[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个字单元重复填充字数据 0403H。 代码如下: 需注意的是如果地址以字母开头的话需要在前面加0。 并且是重复填充字数据,所以每次bx值需要+2. 然后汇编→连接→运行→调试。如下图 结果如下图 然 阅读全文
摘要:
练习一 assume cs:codecode segment mov ah,2 mov dl,3 add dl,30h int 21h mov ah,2 mov dl,6 add dl,30h int 21h mov ah,4ch int 21hcode endsend 对以上代码进行汇编、连接、调 阅读全文
摘要:
1.寄存器 寄存器是CPU中的重要部分,书上学习的8086CPU 的寄存器都为16位的一共有14个。 其中:AX,BX,CX,DX(通用寄存器)为了保持兼容,以上每个寄存器都可以分为两个独立使用的8位寄存器。例如:AX分为AH和AL。 2.字的存储 8086CPU可以一次性处理两种尺寸的数据。(1) 阅读全文
摘要:
实验结论 1.使用debug,将书上程序段写入内存逐条执行并填空。 先用e命令修改0021:0~0021:7的连续8个字节并用d查看。 随后用a命令输出书上的汇编指令。(如下图) 根据实验要求第一部改为mov ax,0021 用r查看初值,然后用t命令逐条执行并观察ax,bx,ss,sp值的变化。 阅读全文
摘要:
实验结论 1.使用debug将程序段写入内存,逐条执行,观察每条指令执行后CPU相关寄存器中内容的变化 用a命令写入汇编指令,然后用t指令逐条查看相关寄存器中的内容。 下面是用e指令写入机器码,并和上方的a指令汇编指令相互验证 如下图,使用-u反汇编查看汇编指令同上图a中输入的指令一致。 然后用t命 阅读全文
摘要:
程序设计语言分为:基础语言和高级语言。 高级语言,即是如今广泛使用的c语言,c++,java等,有着编程效率高,运行效率低的特点。 其中基础语言包含机器语言和汇编语言。机器语言,也是对于机器效率运行最高的语言。通过二进制数字的机器语言进行对应的指令运作。而机器语言的缺点是非专业人士难以去熟记并使用。 阅读全文