汇编语言实验讲义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言实验讲义
计算机学院
2002,5
实验一数据的输入输出
1.实验目的:
(1)熟悉汇编语言的编辑、汇编、连接、运行的全过程。
(2)了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE命令包含文件的方法。
2.实验步骤:
(1)用编辑软件EDIT编辑一个扩展文件名为ASM的汇编语言源程序。
(2)用汇编程序MASM或TASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ)
(3)用连接程序LINK或TLINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)运行可执行文件。观察执行结果,以验证其正确性。
3.从键盘上输入两个十进制数正数(<32767),相加并显示结果。
参考程序:
STACK SEGMENT STACK ‘STACK’
DB 100 DUP(?)
TOP DW ?
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START: MOV AX,STACK
MOV SS,AX
MOV SP,0FFSET TOP
CALL D_BP ;从键盘接受一个十进制数
MOV AX,BX
CALL D_BP ;从键盘接受一个十进制数
ADD AX,BX
CALL B_DP ;显示结果
MOV AH,4CH ;返回DOS
INT 21H
INCLUDE BIN_DEC.ASM
INCLUDE DEC_BIN.ASM
CODE ENDS
END START
4. 改写程序为输入两个十进制数,相减并显示输出。
5.改写程序为输入两个十进制数,相乘并显示输出。
6.改写程序为输入两个十进制数,相除并显示输出。
(注:D_BP:十进制—>二进制转换过程,出口参数BX=二进制数;B_DP:二进制—>十进制转换过程,入口参数AX=二进制数)
实验二BCD—>ASCII
1.实验目的:
(1)进一步熟悉汇编语言的汇编、连接、运行的全过程。
(2)了解汇编语言的程序结构、掌握BCD—>ASCII及字符输出的方法。
2.实验步骤:(同前)
3.实验参考程序:
NAME BCD TO ASCII
DATA SEGMENT
BCDBUF DB 12H,34H,56H,78H,90H,98H,76H,54H,32H,10H
COUNT EQU $-BCDBUF
ASCBUF DB 20 DUP(?)
DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’
SPACE DB 100 DUP(?)
TOP DW ?
STACK ENDS
COSEG SEGMENT
ASSUME CS:COSEG,DS:DATA,ES:DATA,SS:STACK
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
MOV SP,OFFSET TOP
MOV SI,OFFSET BCDBUF
MOV DI,OFFSET ASCBUF
MOV CX,COUNT
CLD
TRANT: LODSB
MOV BL,AL
PUSH CX
MOV CL,4
SHR AL,CL
OR AL,30H
STOSB
MOV AH,2
MOV DL,AL
INT 21H
MOV AL,BL
AND AL,0FH
ADD AL,30H
STOSB
MOV AH,2
MOV DL,AL
INT 21H
POP CX
LOOP TRANT
RET
MAIN ENDP
COSEG ENDS
END START
4.修改程序,在输出的每个数据后加一个逗号,重新调试运行之。
实验三数据处理
1.实验目的:
练习用汇编语言实现对数据块的求和、求最大值(或最小值)、排序等程序设计方法。2.求给定的十个未压缩的BCD码数之和并将结果显示在屏幕上。
参考程序:
NAME SUM TO DECIMAL
DATA SEGMENT
BCDBUF DB 0,1,2,3,4,5,6,7,8,9
SUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
DISP MACRO
OR DL,30H
MOV AH,2
INT 21H
ENDM
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
MOV CX,10
XOR AX,AX
CIR0: ADD AL,BCDBUF[SI]
AAA
INC SI
LOOP CIR0
MOV SUM,AX
MOV DL,AH ;先输出高位
DISP
MOV DL,AL ;再输出低位
DISP
MOV AH,4CH
INT 21H
CODE ENDS
END START
3.将BCDBUF数据区的BCD码数改成带符号字数据,编制这些数比较大小的程序,并调用输出子程序显示结果。
4.将上题中BCDBUF数据区的带符号数按从小到大顺序排序,并将排序后的数据输出。
实验四字符串处理
1.实验目的:
练习用汇编语言实现对字符串拷贝、比较、大小写转换、求长度、查找、插入、删除的方法。
2.对给定的字符串长度,并将结果输出。
参考程序:
DATA SEGMENT
STRBUF DB ‘The sooner,the better !’,0
STRLEN DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DI,OFFSET STRBUF
MOV AX,0
CRI0: CMP BYTE PTR[DI],0