第六章
一(1) 代码和数据在同一个段内程序框架
(2) 伪指令end用法小结
二.dw=define word 即使用dw定义字型数据(数据之间以逗号分隔),dw 既可定义数据,也可以说用它开辟内存空间
db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1
dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2
dd定义双字类型变量,一个双字数据占4个字节单元,读完一个,偏移量加4
三.将数据、代码、栈放在不同的段中,可以使程序结构清晰易懂,对于8086而言,可以使用多个栈,解决长度超64kb的限制问题
访问段中的数据,通过地址(段地址和偏移地址),段名即代表一个标号,代表段地址。
用伪指令 assume 将 cs、ds、ss 分别和 code、data、stack 段相连之后,CPU 也没并没有将对应的段和段寄存器相连接,因为 assume 只是伪指令
四.① 怎么找一段安全、可用的内存空间?
在源程序中预留所需空间,
汇编时由系统分配
② 内存空间找到后,如何处理才能当作栈使用?
在源程序中设置ss和sp
让ss:sp存放初始栈顶位置
第七章
一:and和or指令。
and指令:逻辑与指令,按位进行与运算。通过该指令可将操作对象的相应位设为0,其他位不变。
or指令:逻辑或指令,按位进行或运算。通过该指令可将操作系统的相应位设为1.
二:ASCII码。一种编码方案,是在计算机系统中通常被采用的的,所谓编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。
一个文本编辑过程中,就包含着按照ASCII编码规则进行的编码和解码。
三:以字符形式给出的数据,用‘......’的方式知名数据是以字符的形式给出的。编译器将它们转化为相应的ASCII码。
四:大小写转换。小写字母的ASCII码值比大写字母的ASCII码值大20H。
五:【bx+idata】表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)
六:si和di是8086CPU中和bx功能相近的寄存器,si和di不能分成两个8位寄存器来使用。
【bx+si】和【bx+di】的含义相似,表示一个内存单元,它的编译地址为(bx)+(si)即bx中的数值加上si中的数值。
第八章
1、汇编指令中操作数类型
2、在8086中,可用于表示内存偏移地址的寄存器只有:bx,si,di,bp
(1)这些寄存器可以单个出现在[ ]中,也可以以特定组合方式出现
(2)使用bx,si,di表示偏移地址时,默认段地址在ds中,可以加前缀es,cs,ss
(3)使用bp表示偏移地址时,默认段地址在ss中,可以加前缀ds,es,cs
3、把内存单元ds:[0]作为字节单元还是字单元,依赖于另一个操作数是8位还是16位
(1)mov byte ptr [0],5:5作为字节数据送到ds:[0]对应的字节单元
(2)mov word ptr [0],5:5作为字数据送到ds:[0]对应的字单元
4.div指令
div是除法指令,使用div作除法的时候:
除数:8位或16位,在寄存器或内存单元中
被除数:(默认)放在AX 或 DX和AX中
结果:运算 8位
16位
商
AL AX
余数
AH DX
div指令格式:
div reg
div 内存单元
5.用db和dw定义字节型数据和字型数据。
dd是用来定义dword (double word双字)型数据的。
6.dup是一个操作符,在汇编语言中同db、dw、dd 等一样,
也是由编译器识别处理的符号。
它是和db、dw、dd 等数据定义伪指令配合使用的,用来进行数据的重复