清华大学出版社 TSINGHUA UNIVERSITY PRESS 第4章汇编语言程序格式 ●汇编程序功能 伪操作 汇编语言程序格式 汇编语言程序的上机过程
• 汇编程序功能 • 伪操作 • 汇编语言程序格式 • 汇编语言程序的上机过程 第4章 汇编语言程序格式
清华大学出版社 TSINGHUA UNIVERSITY PRESS 1.程序运行步骤及生成的文件 编辑程序 myfile. asm 汇编程序 myfile. Ist myfile. crf myfile. obj otherfiles obj 连接程序 motile. map motile.exe
1. 程序运行步骤及生成的文件 myfile.asm 编辑程序 汇编程序 连接程序 myfile.crf otherfiles.obj myfile.lst myfile.obj myfile.map myfile.exe
清华大学出版社 sNG↓ HALNIVERSNTY PRESS 建立,运行汇编语言程序 C> EDIT MYFILE.ASM∠ C> MASM MYFILE.ASM∠ Microsoft(R)Macro Assembler Version 5.10 Copyright(C)Microsoft Corp 1981, 1988.All rights reserved. Object filename MYFIle.OBJ: K Source listing [NUL. LST]: MYFILE.LSTK Cross-reference NUL CrF 47962+413345 Bytes symbol space free O Warning Errors 0 Severe errors C> LINK MYFILE.OBJ∠ Microsoft( r)Overlay Linker Version 3.64 Copyright(C)Microsoft Corp 1983-1988. All rights reserved. Run File myfile.exe: k List File NUl. MAP|:∠ Libraries [ liB: LINK: warning L4021: no stack segment C> MYFLLE∠
建立, 运行汇编语言程序 C>EDIT MYFILE . ASM C>MASM MYFILE. ASM Microsoft(R) Macro AssemblerVersion5.10 Copyright (C) Microsoft Corp 1981,1988.All rights reserved. Object filename [MYFILE.OBJ]: Source listing [NUL.LST]: MYFILE.LST Cross-reference [NUL.CRF]: 47962 + 413345Bytessymbol space free 0 Warning Errors 0 Severe Errors C>LINK MYFILE . OBJ Microsoft(R) Overlay Linker Version 3.64 Copyright (C) Microsoft Corp1983-1988.All rights reserved. Run File [MYFILE.EXE]: List File [NUL.MAP]: Libraries [.LIB]: LINK : warning L4021: no stack segment C>MYFILE
清华大学出版社 TSINGHUA UNIVERSITY PRESS 2.汇编程序功能 汇编程序的主要功能: ·检查源程序,给出出错信息。 产生目标文件(obj)和列表文件(.1st) 展开宏指令
2. 汇编程序功能 汇编程序的主要功能: • 检查源程序,给出出错信息。 • 产生目标文件(.obj)和列表文件(.lst)。 • 展开宏指令
清华大学出版社 TSINGHUA UNIVERSITY PRESS 3.伪操作(伪指令) Directives 伪操作是汇编程序对源程序进行汇编时处理的 操作,完成处理器选择、存储模式定义、数据定义、 存储器分配、指示程序开始结束等功能。 处理器选择伪操作 段定义伪操作 程序开始和结束伪操作 数据定义及存储器分配伪操作 ·表达式赋值伪操作 地址计数器与对准伪操作 ·基数控制伪操作
3. 伪操作(伪指令) 伪操作是汇编程序对源程序进行汇编时处理的 操作,完成处理器选择、存储模式定义、数据定义、 存储器分配、指示程序开始结束等功能。 • 处理器选择伪操作 • 段定义伪操作 • 程序开始和结束伪操作 • 数据定义及存储器分配伪操作 • 表达式赋值伪操作 • 地址计数器与对准伪操作 • 基数控制伪操作 Directives
清华大学出版社 TSINGHUA UNIVERSITY PRESS ◆处理器选择伪操作: .8086选择8086指令系统 286选择80286指令系统 286P选择保护模式下的80286指令系统 386选择80386指令系统 386P选择保护模式下的80386指令系统 486选择80486指令系统 486P选择保护模式下的80486指令系统 586选择 Pentium指令系统 586P选择保护模式下的 Pentium指令系统
.8086 选择 8086 指令系统 .286 选择 80286 指令系统 .286P 选择保护模式下的80286 指令系统 .386 选择 80386 指令系统 .386P 选择保护模式下的 80386 指令系统 .486 选择 80486 指令系统 .486P 选择保护模式下的 80486 指令系统 .586 选择 Pentium 指令系统 .586P 选择保护模式下的 Pentium 指令系统 ◆ 处理器选择伪操作:
清华大学出版社 TSINGHUA UNIVERSITY PRESS ◆段定义伪操作: 完整的段定义格式 data segment ;定义数据段 data ends extra segment ;定义附加段 extra ends 画 t ttt code segment ;定义代码段 assume cs code ds: data es: extra start moy ax. data moy ds, ax 段地址→段寄存器 de d end start
◆ 段定义伪操作: 完整的段定义格式 data segment ; 定义数据段 … data ends ;---------------------------------------- extra segment ; 定义附加段 … extra ends ;---------------------------------------- code segment ; 定义代码段 assume cs:code, ds:data, es:extra start: mov ax, data mov ds, ax ; 段地址 → 段寄存器 … code ends end start
清华大学出版社 TSINGHUA UNIVERSITY PRESS code segment main proc far assume code segment start main proc fa push ds assume mov ax. 0 start push ax ret mov ax, 4c00h main endp int 21h code ends end start main endp code ends end start
…… code segment main proc far assume …… start: push ds mov ax, 0 push ax …… ret main endp code ends end start …… code segment main proc far assume …… start: …… …… mov ax,4c00h int 21h main endp code ends end start
清华大学出版社 TSINGHUA UNIVERSITY PRESS 段名 SEGMENT[定位类型][组合类型]使用类型](类别 语句序列 段名ENDS 1)定位类型 align type(p120 PARA BYTE WORD DWORD PAGE (2)组合类型 combine type PRIVATE PUBLIC COMMoN STACK AT exp (3)使用类型 use type USE16 USE32 (4)类别‘ class
段名 SEGMENT [定位类型] [组合类型] [使用类型] [‘类别 ’] …… …… ; 语句序列 段名 ENDS (1) 定位类型 align_type (p120) PARA BYTE WORD DWORD PAGE (2) 组合类型 combine_type PRIVATE PUBLIC COMMON STACK AT exp (3) 使用类型 use_type USE16 USE32 (4) 类别 ‘class’
清华大学出版社 TSINGHUA UNIVERSITY PRESS 存储模式与简化段定义伪操作 (1) MODEL伪操作(p121) MODEL存储模式[语言类型][操作系统类型],堆栈选项 存储模式: tiny sma11 medium compact1arge huge flat model small (2)简化的段定义伪操作(p122) stack 100H code name dat data data? code fardata [name] startup fardata? [name] const exit o end stack [size]
存储模式与简化段定义伪操作 (1) MODEL 伪操作(p121) .MODEL 存储模式 [,语言类型] [,操作系统类型] [,堆栈选项] 存储模式:tiny small medium compact large huge flat .model small .stack 100H .data …… .code .startup …… .exit 0 end (2) 简化的段定义伪操作(p122) .code [name] .data .data? .fardata [name] .fardata? [name] .const .stack [size]