汇编学习第六章
指令
dw
(define word)
用来定义数据。 dw 0122h,089h,a478hstart
(伪指令)
指明程序入口所在,当程序中含有数据段code segment
,初始化时cs为code地址,但是程序不应该从这个地址执行,程序应该从程序段执行,在程序段前面加上start
来设置ip
指向程序段地址
1 | cs:code |
实验
1 | cs:code,ds:data,ss:stack |
- cs的值就是
assume cs:xxx
中指定的xxx
地址 - 若code的地址为 X ,则stack的地址为 X-2 ,data地址为 X-3
计算方法: 设data地址为 ,data中的数据大小为 字节,则stack地址 计算方法:
(1)式利用字节数建立一个等式,(2)式代表值
code段计算方式同理,看stack段中存储了多少字节(16的倍数),如果是n倍的16,则
内存定位
基础知识点:
and和or指令的用法;
通过db ‘(字母)’的形式将对应的ASCII码值提取出来,db的意思是define byte;
字母的大小写转换问题,仔细研究一下ASCII表中大小写字母的区别,差值固定;
[bx + idata] 的意思是 [(bx)+ idata](意义:为高级语言实现数组提供了便利机制);
提供了SI,DI两个16位寄存器,但是这两个寄存器并不能拆分成两个8位寄存器,功能和BX相近;
二重循环问题的处理: 开辟一块栈空间来保存 外层循环的 CX 寄存器的值
结论:
[idata]用一个常量来表示地址,可用于直接定位一个内存单元;
[bx]用一个变量来表示内存地址,可用于间接定位一个内存单元;
[bx+idata]用一个变量和常量表示地址,可在一个其实地址的基础上用变量简洁的定位一个内存单元;
[bx+si]用两个变量表示地址;
[bx+si+idata]用两个变量和一个常量表示地址。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Rick!
评论