程序可由多个段构成,至少有一个代码段 ;汇编语言程序结构例〓(子程结构) scans.,asm 用二进制显示中断向量表中数据D0H的个数 key EQU0DOH;用符号表示常量(关键字) code Segment ;代码段开始 ;用二进制显示BX内容子程 ASSUME CS: code display PROC begin: MOV AX, 0000H MOV CX.16 MOV DS. AX rotate: ROL BX. 1 MOV SI 0000H MOV DL BL MOV CX. 0400H AND DL. OIH MOV BX. 0 ADD DL. 30H MOV AL, key MOV AH 2H next: CMP I SI, AL INT 21H JNZ point LOOP rotate INC BX RET ;子程返回 point: INC SI display eNDP LOOP next CALL display;调用显示子程 code ENDS ;代码段结束 MOV AH,4CH;返回DOS eNd begin;指示程序结束和 INT 21H ;程序入口
程序可由多个段构成,至少有一个代码段 ;汇编语言程序结构例二(子程结构)scans.asm ;用二进制显示中断向量表中数据D0H的个数 key EQU 0D0H ;用符号表示常量(关键字) code SEGMENT ;代码段开始 ASSUME CS:code begin: MOV AX , 0000H MOV DS , AX MOV SI , 0000H MOV CX , 0400H MOV BX , 0 MOV AL , key next: CMP [ SI ] , AL JNZ point INC BX point: INC SI LOOP next CALL display ; 调用显示子程 MOV AH, 4CH ; 返回DOS INT 21H ;用二进制显示BX内容子程 display PROC MOV CX , 16 rotate: ROL BX , 1 MOV DL , BL AND DL , 01H ADD DL , 30H MOV AH , 2H INT 21H LOOP rotate RET ;子程返回 display ENDP code ENDS ;代码段结束 END begin ;指示程序结束和 ;程序入口
、语句结构 「名字]:助记符操作数,…]|;注释l 名字项助记符项操作数项 注释项 例 code SEgMENt ;代码段开始 string DB‘ TSinghua’;定义字符串 next: CMP AL,IBX];查找关键字 display PROC 显示子程序 ey EQU 90H 字符常量
二、语句结构 例 code SEGMENT ;代码段开始 string DB ‘Tsinghua’ ;定义字符串 next : CMP AL,[ BX ] ;查找关键字 display PROC ;显示子程序 key EQU 90H ;字符常量 [名字] [: ] 助记符 [ 操作数, ] [;注释] 名字项 助记符项 操作数项 注释项
名字1:1助记符操作数,…;注释 名字项 助记符项操作数项 注释项 1.名字项 ●据语句功能的不同, 名字项可用来表示段名、变量名、标号、过程名以及常量名等。 ●名字项用一个符号表示 对符号的规定 ①由字符AZ,az,09及符号@、S、下划线_等组成, 最长31个字符,超出部分忽略。 ②不能用数字打头,以免与十六位进制数相混 ③不使用汇编程序中的保留字。(如指令的助记符等) ④对定义的符号不区分大小写
[名字] [: ] 助记符 [ 操作数, ] [;注释] 名字项 助记符项 操作数项 注释项 1. 名字项 ⚫ 据语句功能的不同, 名字项可用来表示段名、变量名、标号、过程名以及常量名等。 ⚫ 名字项用一个符号表示。 对符号的规定: ① 由字符A~Z ,a~z ,0~9及符号@、$、下划线_ 等组成, 最长31个字符,超出部分忽略。 ② 不能用数字打头,以免与十六位进制数相混。 ③ 不使用汇编程序中的保留字。 (如指令的助记符等) ④ 对定义的符号不区分大小写
名字]:助记符[操作数,…1;注释 名字项助记符项操作数项 注释项 2.助记符项 助记符可以是指令、伪操作中的助记符。 对于指令,汇编程序将其翻译成机器语言指令。 MOV AX.100 B80001 对于伪操作,汇编程序据其要求的功能进行处理。 data SEgMent data与一段值对应 string DB‘ Tsinghua'→ string与一内存地址对应
[名字] [: ] 助记符 [ 操作数, ] [;注释] 名字项 助记符项 操作数项 注释项 2. 助记符项 助记符可以是指令、伪操作中的助记符。 对于指令,汇编程序将其翻译成机器语言指令。 MOV AX, 100 → B8 00 01 对于伪操作,汇编程序据其要求的功能进行处理。 data SEGMENT → data与一段值对应 string DB ‘Tsinghua’ → string与一内存地址对应
名字]:助记符[操作数,…1;注释 名字项助记符项操作数项 注释项 3.操作数项 ●操作数给出参与操作的数或数所在的地方。 ●操作数多于一个时,用逗号分开。 ●操作数可以是常数、寄存器、存储器操作数、 标号名、过程名或表达式等
3.操作数项 ⚫ 操作数给出参与操作的数或数所在的地方。 ⚫ 操作数多于一个时,用逗号分开。 ⚫ 操作数可以是常数、寄存器、存储器操作数、 标号名、过程名或表达式等。 [名字] [: ] 助记符 [ 操作数, ] [;注释] 名字项 助记符项 操作数项 注释项