汇编语言实验四
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
福建农林大学金山学院实验报告
系:信息与机电工程系专业:计算机科学与技术年级: 08
姓名:游品尧学号: 082231044 实验课程:汇编语言
实验室号:___ _605 实验设备号: F5 实验时间:11.22
指导教师签字:成绩:
实验四 DOS功能调用
1.实验目的和要求
1.学会DOS中关于显示功能调用指令的用法。
2.领会修改显存方法显示字符。
2.实验环境
实验的硬件环境是:
IBM—PC机及其兼容机
实验的软件环境是:
操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录
1、输入一个字符,显示出来
2、输入一个字符串,显示出来
3、buf开始的3个的16位二进制数用十六进制数的形式显示出来,
(1)理解程序
(2)输入程序,汇编,运行(在DOS状态下输入:文件名.EXE),观察结果。
(3)如果要分行显示,程序要如何修改?
DATA SEGMENT
BUF DW 4F59H, 56A8H, 0FF90H
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DA TA
START: MOV AX, DA TA
MOV DS, AX
MOV SI, 0
P: MOV BX, BUF[SI]
MOV CH, 4
L: MOV CL, 4
ROL BX, CL
MOV DL, BL
AND DL, 0FH
CMP DL, 10
JB NEXT
ADD DL, 7
NEXT: ADD DL, 30H
MOV AH, 2
INT 21H
DEC CH
JNZ L
INC SI
INC SI
CMP SI, 4
JNA P
MOV AH, 4CH
INT 21H
CODE ENDS
END START
4、运行下列程序,在屏幕的第1行,会显示一个字符X,理解程序段STACK SEGMENT
DB 128 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START: MOV AX,STACK
MOV SS,AX
MOV SP,128
MOV AX,0B800H
MOV ES,AX
MOV AH,0 ;BIOS 10H的0号功能,设置80X25的彩色字符模式
MOV AL,03H
INT 10H
MOV AH,'X'
MOV ES:[160*1+40*2],AH
MOV AL,0
MOV AH,4CH
INT 21H
CODE ENDS
END START
5、显示
*********
*******
*****
***
*
6、编写程序,统计字缓冲区中的20个数据的正数、负数、0的个数,并将
统计结果以16进制形式显示出来。
4.算法描述及实验步骤
1.输入一个字符,显示出来。
DA TA SEGMENT
STRING DB '--------',13,10,'$'
HUAN DB 13,10,'$'
DA TA ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DA TA
START: MOV AX,DA TA
MOV DS,AX
----------------------------------------------------------------------------------------------------------------- MOV AH, 1
INT 21H 输入字符;
MOV BL,AL 将输入的字符放在BL 中;
LEA DX,HUAN
MOV AH,9
INT 21H 换行;
LEA DX,STRING
MOV AH,9
INT 21H 加上一个‘----------------‘间隔;
MOV AH,2
MOV DL,BL
INT 21H 显示之前输入的字符;
----------------------------------------------------------------------------------------------------------------- MOV AH,4CH
INT 21H
CODES ENDS
END START
2.输入一个字符串,显示出来。
STACKS SEGMENT STACK
DB 200 DUP(?)
STACKS ENDS
DA TAS SEGMENT
STR DB"please input a string:$"
BUF DB 30
DB ?
DB 30 DUP (?)
CRLF DB 0AH,0DH,"$"