微机原理与汇编语言程序设计实验一.docx
- 文档编号:28677119
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:13
- 大小:497.20KB
微机原理与汇编语言程序设计实验一.docx
《微机原理与汇编语言程序设计实验一.docx》由会员分享,可在线阅读,更多相关《微机原理与汇编语言程序设计实验一.docx(13页珍藏版)》请在冰豆网上搜索。
微机原理与汇编语言程序设计实验一
实验一汇编语言上机环境及基本操作
一、实验目的及要求
1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、实验内容
1.汇编语言源程序的建立
本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为ABC。
DATASEGMENT
BUFDB23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH
CNEQU$-BUF
DATAENDS
STACKSEGMENTSTACK’STACK’
STADB10DUP(?
)
TOPEQU$-STA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETBUF
MOVCX,CN
DECCX
MOVAL,[BX]
INCBX
LP:
CMPAL,[BX]
JBENEXT
MOVAL,[BX]
NEXT:
INCBX
DECCX
JNZLP
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
键入以下命令:
C:
\>EDITABC.ASM
此时屏幕的显示状态如图1所示。
图1用EDIT编辑ABC.ASM程序窗口
程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件
一般情况下,MASM汇编程序的主要功能有以下3点:
(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。
图2MASM宏汇编程序工作窗口
汇编过程的错误分警告错误(WarningErrors)和严重错误(SevereErrors)两种。
其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。
这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。
3.用连接程序生成可执行程序文件
经汇编以后产生的目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过连接以后,才能成为可执行文件(即扩展名为.EXE)。
连接过程如图3所示。
图3LINK连接程序工作窗口
上述提示行回答以后,连接程序开始连接,如果连接过程中出现错误,则显示出错误信息,根据提示的错误原因,要重新调入编辑程序加以修改,然后重新汇编,再经过连接,直到没有错误为止。
连接以后,便可以产生可执行程序文件(.EXE文件)。
4.程序的执行
当我们建立了正确的可执行文件以后,就可以直接在DOS状态下执行该程序。
如:
C:
\>ABC
本程序当中没有用到DOS中断调用指令,所以在屏幕上看不到程序执行的结果。
我们可以采用调试程序DEBUG来进行检查,相关内容请参见实验二。
三、实例分析
下面通过一个汇编语言源程序的实际例子,来了解汇编语言源程序的建立、汇编、连接、运行的完整过程。
给出的程序是从键盘输入10个字符,然后以与键入相反的顺序将10个字符输出到显示屏幕上。
设定源程序名为STR.ASM。
1.用EDIT建立汇编语言源程序
在DOS状态下,调用EDIT编辑程序建立文件名为STR.ASM的汇编源程序,如图4所示。
图4用EDIT建立汇编语言源程序
2.用MASM汇编生成目标文件
源程序文件建立完毕后,调用宏汇编程序MASM对STR.ASM进行汇编,如图5所示。
图5用MASM汇编生成目标文件
3.用LINK进行连接生成可执行文件
汇编完毕,程序正确,则可调用LINK进行连接,以生成可执行文件STR.EXE,连接过程如图6所示。
图6用LINK连接生成可执行文件
4.程序的运行
在DOS状态下,直接键入可执行的程序文件名STR,然后从键盘输入“0123456789”10个数字,输入回车键后,计算机将10个数字倒序排列输出,即“9876543210”。
再次键入可执行的程序文件名STR,从键盘输入“abcdefghIj”10个字符,输入回车键后,计算机将10个字符倒序排列输出,即“jihgfedcba”。
运行过程及其结果如图7所示。
图7程序的运行状态及结果
参考程序:
显示字符串
data segment
msgdb'helloworld!
',0dh,0ah,24h
data ends
stack segmentstack'stack'
db16dup('stack')
stack ends
code segment
assume cs:
code,ds:
data,ss:
stack
main proc far
start:
movax,data ;初始化数据段
movds,ax
movdx,offsetmsg ;字串首地址送DX
movah,09h ;调用DOS系统功能
int 21h ;显示字串
mov ax,4c00h ;返回DOS
int 21h
main endp
code ends
endstart
实验2 分支程序的设计
一、实验目的
1) 熟悉分支程序的编写。
2) 学习DOS系统功能调用(INT21H/08H,AL=ASCII字符)从键盘接收单个字符的用法。
3) 掌握数据的输入与输出方法。
二、实验内容
1) 用DOS系统功能调用INT21H的08H功能接收键盘字符(AL=字符),若是F,显示“Thisisthefirstwordstring.’,若是S,显示“Thisisthesecondwordstring.’,否则退出。
2) 设计一数据块间的搬移程序
三、实验要求
1) 实验前准备好汇编语言源程序,阅读实验指导书关于调试方法与步骤的内容。
2) 实验要求在PC机上进行。
四、编程提示
1) 用DOS系统功能调用INT21H的09H功能显示字符串。
2) 用P命令执行程序,可看出结果。
3) 显示字符串参考程序
data segment
str1 db 'thisisthefirstwordstring.','$'
str2 db 'thisisthesecondwordstring.','$'
data ends
stack segment
sta db 50 dup (?
)
top1 equlengthsta
stack ends
code segment
assume cs:
code,ds:
data,ss:
stack
main proc far
start:
push ds ;将DS入栈
mov ax,00h ;AX置零
push ax ;将0入栈
mov ax,data ;初始化DS
mov ds,ax
mov ah,08h ;键盘输入一个字符
int 21h ;字符在AL中
cmp al,'f'
jz disp1
cmp al, 's'
jz disp2
jmp do
disp1:
mov dx,offsetstr1 ;显示字符串
mov ah,09h
int 21h
jmp do
disp2:
mov dx,offsetstr2
mov ah,09h
int 21h
do:
mov ax,4c00h ;返回DOS
int 21h
main endp
code ends
endstart
实验3 循环程序设计实验
一、实验目的
1) 学习将一个十六位二进制数数转换成四位十六进制数显示的编程方法。
2) 熟悉循环程序的设计方法。
1) 学习乘法指令的用法。
二、实验内容
实现两个字节相乘的程序,并转换成十六进制数显示出结果。
23H⨯20H=?
三、实验要求
1) 分析题目,确定算法,画出程序框图。
2) 实验前准备好汇编语言源程序。
3) 实验要求在PC机上进行。
四、编程提示
1)两个数据放在数据段的DAT1和DAT2中。
2) 计算结果转换成ASCII码显示,因此结果的高四位要拼成3,用INT 21H的02H功能(DL=显示字符)显示结果。
3) 参考程序
DATA SEGMENT
DAT1 DB 25H ; 25H
DAT2 DB 30H ; 30H
SUM1 DW ?
?
SUM2 DB 10DUP('0')
TABLE DB '0','1','2','3','4','5','6','7','8','9'
DB 'A','B','C','D','E','F'
DATA ENDS
STACK SEGMENT
ST1 DB 100 DUP ('SA')
TOP1 EQU ST1 LENGTHST1
STACK ENDS
CODE SEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
MAIN PROC FAR
START:
MOV AX, DATA ;初始化数据段
MOV DS, AX
MOV AX, STACK ;初始化堆栈段
MOV SS, AX
MOV AX, 100
MOV SP, AX
XOR AX, AX
MOV BL, DAT1 ;取乘数
MOV AL, DAT2 ;取被乘数
MOV SI, OFFSETTABLE ;取ASCII码表首地址
MOV DI, OFFSETSUM2 ;取结果地址
MUL BL
MOV SUM1, AX ;存乘积二进制结果
; convertbinarynumberinbxtohex 转换成16进制
mov BX, AX ;结果送BX
MOV CX, 4 ;转换4位数
HEX16:
PUSH CX ;保护CX
MOV CL, 4 ;循环左移4位
ROL BX, CL
MOV AL, BL
AND AL, 0FH ;保留低四位
PUSH BX ;保护BX
MOV BX, SI ;ASCII码表首地址送BX
XLAT ;转换成ASCII码
MOV [DI], AL ;存结果的ASCII码
INC DI ;地址加一
POP BX ;恢复BX中待转换的数
POP CX ;弹出CX的计数值
LOOP HEX16 ;未转换完,继续
; display resultsonscreen
MOV AH, 02H ;调用DOS的02H功能显示
MOV CX, 04H ;显示数据的位数
MOV DI, OFFSETSUM2 ;送出待显示数据的首地址
DON2:
MOV DL, [DI] ;显示数据送DL
INT 21H ;显示
INC DI ;显示数据所在存储单元加一
LOOP DON2 ;未显示完,继续
MOV AH, 4CH ;返回DOS
INT 21H
RET
MAIN ENDP
CODE ENDS
END START
五、实验报告
1) 说明程序结构及功能。
2) 说明入口参数与出口参数,参数的输人与输出方法。
3) 说明调试过程中遇到的问题及解决的方法。
4) 画出程序框图,打印源程序清单与执行结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 汇编语言 程序设计 实验