注意:文件名不能以数字开头
1.切换到MASM5文件夹下。
将程序保存为asm格式,
cmd中运行masm test;生成obj文件
cmd中运行link test;生成exe文件
cmd中运行debug test.exe
//**安全退出程序**
mov ax,4c00h
int 21h
段寄存器CS
对于程序运行后看不到结果,是因为程序没有向显示器输出信息
计算2+2
assume cs:code
code segment
mov ax,2
add ax,ax
mov ax,4c00h
int 21h
code ends
end
计算2的5次方
N的2次方可用N+N实现
assume cs:code
code segment
mov ax,2
mov cx,5 ;cx中存放循环次数
s:add ax,ax
loop s
mov ax,4c00h
int 21h
code ends
end
loop指令格式
mov cx,循环次数
s: 循环执行的程序段
loop s
当执行loop s的时候进行两步操作:
1.(cx)=(cx)-1;
2.判断cx中的值,不为0则转至标号s,若为0则执行下一条指令(mov ax,4c00h);
计算ffff:0006单元中的数乘以3,结果存储在dx中
ffff:6单元是一个字节单元,而ax是一个16位寄存器,数据长度不一样。若要ax中的值和ffff:0006单元中的相等,ax中数据要为00XXH,所以应该令ah(ax的高八位)=0
assume cs:code
code segment
mov ax,0fffh ;大于9FFFH的16进制数据A000H...FFFH等都是以字母开头,而在汇编程序中数据不能以字母开头,所以要在前面加上0
mov ds,ax ;ds存放数据段基地址
mov bx,6 ;bx为基址变址寄存器
mov al,[bx];以上设置(al)=((ds*16)+(bx)),(ah)=0
mov ah,0
mov dx,0 ;将结果保存到dx中
mov cx,3
s:add dx,ax
loop s
mov ax,4c00h
int 21h
code ends
end
INT是interupt中断的缩写,INT 21H是指DOS的中断调用命令,最常用的包括:01H、07H和08H —从标准输入设备输入字符
02H —字符输出
03H —辅助设备的输入
04H —辅助设备的输出
05H —打印输出
06H —控制台输入/输出
09H —显示字符串
0AH — 键盘缓冲输入
0BH —检测输入状态
0CH —清输入缓冲区的输入功能用法如下:MOV AH 09H
INT 21H
JE ;等于则跳转
JNE ;不等于则跳转
JZ ;为 0 则跳转
JNZ ;不为 0 则跳转
JS ;为负则跳转
JNS ;不为负则跳转
JC ;进位则跳转
JNC ;不进位则跳转
JO ;溢出则跳转
JNO ;不溢出则跳转
JA ;无符号大于则跳转
JNA ;无符号不大于则跳转
JAE ;无符号大于等于则跳转
JNAE ;无符号不大于等于则跳转
JG ;有符号大于则跳转
JNG ;有符号不大于则跳转
JGE ;有符号大于等于则跳转
JNGE ;有符号不大于等于则跳转
JB ;无符号小于则跳转
JNB ;无符号不小于则跳转
JBE ;无符号小于等于则跳转
JNBE ;无符号不小于等于则跳转
JL ;有符号小于则跳转
JNL ;有符号不小于则跳转
JLE ;有符号小于等于则跳转
JNLE ;有符号不小于等于则跳转
JP ;奇偶位置位则跳转
JNP ;奇偶位清除则跳转
JPE ;奇偶位相等则跳转
JPO ;奇偶位不等则跳转