下面是3+5的汇编程序的代码和解释,记录一下,方便自己回顾:
;完整段的求3+5的和 DATAS SEGMENT FIVE DB 5 ;定义5为字节类型变量,FIVE是变量的名字 类似C中int five=5赋值。 DATAS ENDS STACKS SEGMENT DB 128 DUP (?) STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS ;假设每个段寄存器获得段地址的位置,相当于C中的函数声明 START: MOV AX,DATAS ; 将伪段地址放入ax中,datas不是指令,而是伪指令,实际上是一个动态的内存地址. ; 要想运行,必须先其地相放入到ds中,但是内存数不能放入段地址 MOV DS,AX ;mov ds,ax ;就是将段地址装入段寄存器,最终达到了段地址装入段寄存器的目的! ;在80X86中规定,内存数不可以直接装入段寄存器,所以才会有这样的一次中转! MOV AL,FIVE ;将字节变量5存入到寄存器中,也可MOV AL,5 ADD AL,3 ;将寄存器中的值取出,加上3后放回 ADD AL,30H ;需要转化成ASCII码才能进行显示,8对应ASCII码为38H,故加上30H MOV DL,AL ;将待输出字符的ASCII码传到DL中去 MOV AH,2 ;将02命令放入AH中,表示输出DL INT 21H ;DOS系统调用放入AH的命令 MOV AH,4CH ;就是结束本程序,返回 DOS 操作系统。 INT 21H ;DOS系统调用放入AH的命令 CODES ENDS END START
另外,附一下关于 INT 21H的讲解:
http://blog.csdn.net/bill_ming/article/details/7305269