1、伪指令
- segment 段段名称也要标号
1
2段名称 segment
段名称 ends - end 整个程序的结束
- assume 假设某一 段寄存器 和程序中的某一用 segment…ends定义的段 相关联
2、程序返回
1 | mov ax,4c00H |
示例
1 | assume cs:abc |
将 MASM中的程序和hello.asm 放到同一个目录下,打开DOSBOX,执行ML.EXE生成可执行文件 或者vscode安装 MASM/TASM 插件
3.获取内存中的数据
方式1
1
2mov bx,2
mov ax,[bx]将bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中 即
(ax) = (ds*16+(bx))
其中( )
表示地址中存储的内容方式2
1
mov ax,ds:[0]
4.loop 循环
1 | assume cs:code |
cx 中存放的是循环的次数
5.累加ffff0H ~ ffffbH 内存单元的数据到dx中
1 | assume cs:code |
内存安全空间
0:200 ~ 0:2ff 即
0002:00 ~ 0002:ff
注意事项
汇编源代码中数据不能以字母开头
- 错误示范
1
mov ax,ffffH
- 正确示范
1
mov ax,0ffffH
通用寄存器的一般用法
AX 通用寄存器什么都可以放
BX 一般存放内存单元寻址的相对地址与DS搭配
CX 一般存放循环执行的次数与loop搭配使用