1: 字符输出
LDA AX,BUffer: 将buffer地址的连带偏移地址加入到AX寄存器中 , 8086 8088为16进制的寄存器,20位物理地址
MOV AX,BUffer; 同理,但是将buffer的16位地址装入AX寄存器中
DATAS SEGMENT STRS DB 'Hello World!',13,10,'$' ;定义了一个字符串,标号是STRING,其值是字符串首字符的地址。 ;DB表示的是字符串中每个字符的都是一个字节,每往后加1的时候,地址偏移量加1. ;13 CR 回车 ;10 LF 换行 ;$作为字符串的结束符 不结束将会输出乱码 DATAS ENDS STACKS SEGMENT stack STACKS ENDS ASSUME CS:CODE,DS:DATAS,SS:STACKS CODE SEGMENT main: MOV AX,DATAS ; 初始化代码 MOV DS,AX; 初始化代码 LEA DX,STRS; 将偏移地址STRS装入数据寄存器 MOV AH,9 ;9 为输出代码 INT 21H ; 执行中断 MOV AH,4CH INT 21H; CODE ENDS end main
2:顺序控制
顺序控制是构成程序的核心条件之一,这里尤为主要的说明一下:
Z=((3X+Y-5)/2其中X=15HY=10H
DATAS SEGMENT ;定义Z=((3X+Y-5)/2其中X=15H Y=10H X DW 15H Y DW 10H Z DW ? DATAS ENDS ASSUME CS:CODE,DS:DATAS CODE SEGMENT main: MOV AX,DATAS ; 初始化代码 MOV DS,AX; 初始化代码 MOV AX,X SHL AX,1 ADD AX,X ADD AX,Y SUB AX,5 SAR AX,1 MOV Z,AX LEA DX,Z MOV AH,02H ; 显示输出 INT 21H MOV AH,4CH INT 21H; CODE ENDS end main
3: 基本流程控制
需要了解psw状态寄存器的各项代表的意思,这里只需要关注 ZF 零位标志位