《汇编顺序结构程序》课件
- 格式:pptx
- 大小:3.82 MB
- 文档页数:32


实验报告
(一)
课 程: 微机原理
专 业: 建筑电气与智能化
班 级: 电16
学 号:
姓 名:
指导教师:
时 间: 2019年4月24日
1
实验1:顺序结构程序设计
1.实验目的:
掌握汇编语言程序的一般结构,掌握顺序结构程序设计方法。
2.实验内容:
实验任务:
编写程序用查表法求0~F这16个十六进制数对应的ASCII码。
源程序清单:
DATA SEGMENT
X DB 6
TABLE DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H,46H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,X
LEA BX,TABLE
XLAT
MOV X, AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验结果:
实验2:分支结构程序设计
1.实验目的:
掌握条件转移语句,掌握基于条件转移的分支程序设计方法,掌握利用DEBUG修改参数检查结果的方法。
实验3 顺序结构程序设计
一、实验目的
学习数据传送指令和算术运算指令的用法;掌握数据定义伪指令的格式,会用DEBUG中的D命令观察DB、DW、DD存储数据的格式;熟悉汇编语言的基本框架,掌握编写汇编语言程序的基本方法。
二、示 例
源程序如下:
data segment
a db 10
b db 20
d db 30,40,50
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov al,d+1
add al,d
mov a,al
mov al,d+1
add al,d+2
mov b,al
add d,10
add d+1,20
add d+2,30
exit: mov ah,4ch
int 21h
code ends
end start 阅读程序,试问程序执行到exit时,字节单元a、b、d、d+1、d+2中的内容各是什么?(结合程序分析和实验实际结果截图)
分析出结果,并上机验证。
三、实验题
求表达式Y=A*X2+B*X+C的值,已知a、b、d分别存放在dataa、datab、datad字节单元,X存放在TABLE字节单元,结果Y放入RESULT字单元。
要求: ① 在DEBUG下多次修改X的值,观察执行结果Y
四、实验报告
写出程序清单,记录运行结果;总结DEBUG中U、E、D、T、G命令的功能。
程序代码:
data segment
dataa db 1 结果:a:46
b:5A
d:28
d+1:3C
8051单片机汇编语言程序设计
一、顺序结构
1. 有两个4位压缩BCD码,分别存放在30H,31H,40H,41H单元,要求求和,结果送
至51H,52H中(高位在前,地位在后),给出程序流程图
ORG 0000H
CLR C MOV A,31H
ADD A,41H
DA A
MOV 52H,A
MOV A,30H ADDC A,40H
DA A
MOV 51H,A
END
若需要求和的数为5271和6489,请分析每条指令后A和PSW的对应的数据
二、分支结构
2. 求双字节有符号数的补码(双字节数为16位二进制数,其最高位D15为符号位),给出
程序流程图和程序代码(单分支结构) CPT16: MOV A,R7
JNB ACC.7,EXT
MOV C,ACC.7
MOV F0,C
CPL A MOV R7,A
MOV A,R6
CPL A
ADD A,#01
MOV R6,A CLR A
ADDC A,R7
MOV C,F0
MOV ACC.7,C
MOV R7,A EXT: RET
验证以上程序对-12597和6831两数的结果是否正确。
3. 求分段函数的值,X是自变量存放在30H单元,Y是因变量存放在31H单元,给出程序
流程图和程序代码(多分支结构A:逐次比较法)
10
00
10XX
YX
X
FUNC1:MOV A,30H
CJNE A,#00H,NZERO
AJMP NEGT
NZERO: JB ACC.7,POSIT ADD A,#1
AJMP NEGT
POSIT: MOV A,#81H
NEGT: MOV 31H,A
RET
4. 根据31H(高字节)、30H(低字节)的内容(分支转移参数)转向不同的处理程序(PRGX
(X=0~n,n>256)),给出程序流程图和程序代码(多分支结构B:转移表)
JUMP1:MOV DPTR,#TAB1
MOV A,30H MOV B,#3
实验二 程序格式和上机过程
实验类型: 验证性
实验目的:
1、掌握汇编语言程序格式
2、掌握汇编语言程序编写和调试方法
3、掌握数据段、附加数据段的初始化方法和返回DOS的方法
4、掌握基本四则运算和双精度数运算的方法。
实验步骤:
1、进入DOS环境
2、输入命令:path c:\windows\command;c:\turbo\masm保证实验过程中使用的所有命令都在当前路径直接调用
3、启动EDIT编辑器输入程序代码
4、检查语法错误,如无错误以ASM为后缀名保存文件(如文件名chen.asm)
5、运行命令MASM CHEN.ASM生成OBJ文件
6、如果出错请回到第3步再纠正错误
7、运行命令LINK CHEN.OBJ(此时提示没有堆栈错误请忽略)生成EXE文件
8、运行DEBUG调入可执行程序DEBUG CHEN.EXE(以下DEBUG 命令请参看第一次实验内容)
9、执行反汇编U
10、查看程序结束地址
11、运行G 命令运行程序
12、运行D和R命令查看相应的内存单元和寄存器的数据是否与结果一致,如果不一致回到第3步纠正错误,也可以运行T命令逐条运行程序寻找错误指令位置再做修改。
实验内容: 编写一段程序代码实现X-Y2+Z→W其中X,Y,Z,W都是16位无符号数。
代码:
data segment
x dw 1000h
y dw 2000h
w dw 3000h
z dw ?
r dw ?
data ends
code segment
main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax