设计一个完整的汇编语言源程序.ppt
文本预览下载声明
第一次实验内容 1.2:汇编语言编程与调试方法 (1)汇编语言程序结构 (2)汇编语言程序开发过程 (3)MS—DOS EDIT文本编辑 (4)TD使用方法 1.3.1:简单程序设计实验 P25:例1.1 P26:实验内容1 P27:实验内容2 P27:实验内容3 p27实验(2) data segment x dd 02a8b7654h y dw 5abch z dw ? f dw ? data ends stacka segment para stack stack db 100 dup(?) stacka ends code segment assume ds:data,cs:code,ss:stacka,es:data start: mov ax,data mov ds,ax mov es,ax mov ax,word ptr x mov dx,word ptr x+2 div y mov z,ax mov f,dx ?? mov ah,4ch int 21h code ends end start ? * * 一、设计一个完整的汇编语言源程序,实现Z=X+Y。 MOV AL,X MOV BL,Y ADD AL,BL MOV Z,AL ;取被加数 ;取加数 ;完成X+Y运算 ;把结果保存在目的单元中 1. 实现加法运算的程序段如下: 2. 数据段定义 DATA SEGMENT DATA ENDS X DB 32H Y DB 25H Z DB 1 DUP(?) 段定义语句 SEGMENT/ENDS 功能:指出段名,表示段的开始和结束 格式:段名 SEGMENT ┆ 段名 ENDS ;数据段起始 ;数据段内容 ;数据段结束 3. 堆栈段定义 STACKA SEGMENT STACK DB 100 DUP(?) STACKA ENDS 4. 代码段定义 CODE SEGMENT CODE ENDS ASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA ┇ 段寄存器说明语句 ASSUME 格式: ASSUME 段寄存器: 段名, 段寄存器: 段名, …… 功能: 说明当前段所在位置。 二、完整的汇编语言源程序,实现Z=X+Y。 MOV AL, X MOV BL, Y ADD AL, BL MOV Z, AL X DB 32H Y DB 25H Z DB 1 DUP(?) DATA SEGMENT DATA ENDS STACKA SEGMENT STACKA ENDS CODE SEGMENT CODE ENDS END START ASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AH, 4CH INT 21H 核心程序段 数据定义 返回DOS状态 对DS和ES进行初始化 说明各段所在位置 定义堆栈段 定义数据段 定义代码段 结束 DB 100 DUP(?) ORG 2100H 指定程序存放的起始地址偏移量 DATA SEGMENT DATA ENDS CODE SEGMENT CODE ENDS END START ASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AH, 4CH INT 21H 核心程序段 返回DOS状态 对DS和ES进行初始化 说明各段所在位置 定义数据段 结束 ··· ··· ··· ··· 三、程序正常结束的方式 1。主程序方式 2。定义为过程形式 DATA SEGMENT DATA ENDS CODE SEGMENT CODE ENDS END START ASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA MOV AX, DATA MOV DS, AX MOV ES, AX RET
显示全部