人人范文网 范文大全

实验一 语言实验

发布时间:2020-03-02 19:02:48 来源:范文大全 收藏本文 下载本文 手机版

微机原理与接口技术实验(1)

实验一 汇编语言程序上机过程 1 实验二 屏幕字符显示程序 3 实验三 音乐程序 5 实验四 键盘和窗口程序 7 实验五 活动图形显示程序 9 实验六 磁盘文件操作程序 12

实验

一、实验二必做,其余可以选做

实验一 汇编语言程序上机过程

实验目的:

1、掌握常用工具软件 PE,MASM和LINK的使用。

2、伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。

3、利用的 1号功能实现键盘输入的方法。

4、了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。 程序: data segment meage db \'This is a sample program of keyboard and disply\' db 0dh,0ah,\'Please strike the key!\',0dh,0ah,\'$\' data ends stack segment para stack \'stack\' db 50 dup(?) stack ends code segment aume cs:code,ds:data,:stack start: mov ax,data mov ds,ax mov dx,offset meage mov ah,9 int 21h again: mov ah,1 int 21h cmp al,1bh je exit cmp al,61h jc nd cmp al,7ah ja nd and al,11011111b nd: mov dl,al mov ah,2 int 21h jmp again exit: mov ah,4ch int 21h code ends end start 实验步骤:

1、用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。

2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。

3、用TYPE命令显示1产生的.LST文件。

4、用LINK将.OBJ文件连接成可执行的.EXE文件。

5、在DOS状态下运行LINK产生的。EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。 实验报告:

1、汇编,连接及调试时产生的错误,其原因及解决办法。

2、思考:

1)若在源程序中把INT 21H的\'H\'省去,会产生什么现象? 2)把 INT 21H 4CH号功能改为 INT 20H,行不行?

2 实验二 屏幕字符显示程序

实验目的:

通过实验掌握下列知识:

1、8086指令: JMP,ROR,XOR,HLT。

2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。

3、直接向视频RAM(VRAM)送ASCII码进行屏幕显示的方法。

4、IBM-PC机的ASCII码表及控制字符。

5、命令(。COM)文件及使用方法。

6、利用^Break退出程序的方法及局限性。 实验内容及步骤:

一、利用INT 21 0AH号功能调用显示字符串。

1、用A命令在100H处键入下列程序: MOV AH, 9 MOV DX,110 INT 21 INT 20

2、用A命令在110H处键入下列字符串的ASCII码: DB \'This is a sample!$\'

3、用N命令和W命令将此程序(包括数据区)存入文件名为AA。COM的磁盘文件中。(存入前BX:CX必须置为文件长度值)。

4、用Q命令退出DEBUG。

5、在DOS命令下打AA,运行此程序,即在屏幕上显示\'This is a sample!\'字符串,若不出现,用DEBUG检查程序有无错误。

二、利用INT 21H 2号功能显示字符:

1、用A命令在100H处键入下列程序: XOR DL,DL MOVCX,100 LOP:MOV AH,2 INT 21 INC DL PUSH CX MOV CX,8 DELY: PUSH CX MOV CX,0 J: LOOP J POP CX LOOP DELY POP CX LOOP LOP INT 20

2、用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?

3、按CTRL+BREAK退出此程序,若一次不行可多做几次。

三、直接向VRAM送ASCII码显示字符

1、用A命令在100H处键入下列程序: MOV AX,B000 MOV DS,AX XOR AL,AL XOR BX,BX MOV CX,100 LOP: MOV [BX],AL INC BX INC AL PUSH CX MOV CX,8 DELY: PUSH CX MOV CX,0 J: LOOP J POP CX LOOP DELY POP CX LOOP LOP INT 20

2、用N命令和W命令将此程序存入BB.COM文件中。(一定要先存入!)

3、用G命令运行此程序,仔细观察每一个ASCII码显示结果,并和字符表及上一道程序运行情况进行对照,其控制字符区(07-0DH)显示结果和INT 21H2号功能调用有何不同? 四。自编一个程序,要求显示AX的内容,即能显示AX=xxxx。

调试时AX的内容可用R命令赋值,也可用MOV指令赋值。 实验报告要求:

1、各项实验记录及观察体会。

2、利用INT 21H显示和直接向VRAM送ASCII码显示方法在显示结果上有什么不同?

3、自编程序草稿及调试结果。

实验三 音乐程序

实验目的:

1、掌握PC机发音原理及音乐程序编制方法。

2、8086指令: IN,OUT,DIV,OR 实验内容:

一、发音程序。

1、用DEBUG输入下列程序: MOV DX,4000H IN AL,61H AND AL,FCH LOP: XOR AL,02H OUT 61H,AL MOV CX,0140H DEY: LOOP LOP DEC DX JNE LOP INT 21H INT 20H

2、在DEBUG下运行此程序,改变延时时间常数,注意声音高低变化。

二、音乐程序。

1、输入,汇编,连接并运行下列程序: stacksg segment para stack dw 32 dup(?) stacksg ends datasg segment tiger db 0ah,0dh,\'two tiger。$\' tig_freq dw 2 dup(262,294,330,262) dw 2 dup(330,349,392) dw 2 dup(392,440,392,349,330,262) dw 2 dup(294,196,262),0ffffh tig_time dw 10 dup(25),50,25,25,50 dw 2 dup(12,12,12,12,25,25) dw 2 dup(25,25,50) datasg ends codesg segment aume cs:codesg,ds:datasg,:stacksg start: mov ax,datasg mov ds,ax lea dx,tiger mov ah,9 int 21h lea si,tig_freq lea bp,ds:tig_time

5 call play mov ah,4ch int 21h play proc freq: mov di,[si] cmp di,0ffffh je end_ply mov bx,ds:[bp] call sound add si,2 add bp,2 jmp freq end_ply: ret play endp sound proc mov al,0b6h out 43h,al mov dx,14h mov ax,4f38h div di out 42h,al mov al,ah out 42h,al in al,61h mov ah,al or al,3 out 61h,al wait: mov cx,5000 spkr_on: loop spkr_on dec bx jnz wait mov al,ah out 61h,al ret sound endp codesg ends end start

2、修改程序,使它能演奏一首你所喜爱的歌曲。

3、若歌曲中有休止符,怎么办? 实验报告:

1、实验记录和体会。

2、自编程序。

6 实验四 键盘和窗口程序

实验目的:

1、掌握利用INT 16H 2号功能调用实行键盘输入的方法。

2、熟悉键盘的扫描码和ASCII码的关系。

3、掌握利用INT 10H功能调用实现窗口功能的方法。 实验内容:

一、键盘输入程序

1、程序: PRO_NAM AGAIN: BINIHEX ROTATE: PRINT: SEGMENT ASSUME CS:PRO_NAM ORG 100H MOV AH,0 INT 16H MOV BX,AX CALL BINIHEX MOV AH,2 MOV dl,20h INT 21H MOV DL,BL MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H JMP AGAIN INT 20H PROC NEAR MOV CH,4 MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINT ADD AL,7 MOV DL,AL MOV AH,2 INT 21H DEC CH

7 JNZ ROTATE RET BINIHEX ENDP PRO_NAM ENDS END AGAIN

2、输入,汇编,连接此程序,并将它转变成。COM文件。

3、运行此程序,观察并记录各个键的扫描码,ASCII码及对应字符。

二、窗口程序:

1、程序: code segment aume cs:code,:code org 100h start: mov ax,600h mov cx,0 mov dx,184fh mov bh,7 int 10h pos: mov ah,2 mov dx,101eh mov bh,0 int 10h mov cx,20 get: mov ah,1 int 21h cmp al,1bh jz exit loop get mov ax,601h mov cx,81eh mov dx,1031h mov bh,7 int 10h jmp pos exit: int 20h code ends end start

2、将此程序输入并转变成。COM文件。

3、运行此程序,观察按不同键所产生的效果。

4、此程序所产生的窗口效果有何缺陷?试修改之。 实验报告:

1、实验记录。

2、自编程序。

8 实验五 活动图形显示程序

实验目的:

1、掌握利用INT 10H实现活动图形的方法。

2、INT 10H 的 2号,6号,0AH号功能。 实验内容:

参考下列程序自编一活动的复合图形显示程序。 程序一 活动字符图形显示程序: stack segment stack db 256 dup(0) stack ends code segment aumecs: code,:stack move: mov cx,0 mov dx,184fh mov bh,7 mov ax,0618h int 10h mov dx,0 mov cx,1 mov bh,0 rept: mov ah,2 int 10h mov ah,10 mov al,0fh int 10h call dely mov al,20h mov ah,10 int 10h inc dh inc dl inc dl cmp dh,25 jne rept mov ah,4ch int 21h dely proc push cx push dx mov cx,5 lop: mov dx,0 lop1: dec dx jne lop1 loop lop

9 pop dx pop cx ret dely endp code ends end move 程序二静止复合图形显示程序: stack segment stack db 256 dup(0) stack ends data segment chrtab dw 7 db 0dbh,0,0,0dbh,0,1 db 0dbh,0,1,52h,0,1 db 1,-1,-1,9,2,0 db 9,0,-2 data ends code segment aume cs:code,:stack,ds:data start: mov ax,data mov ds,ax mov cx,0 mov dx,184fh mov bh,7 mov ax,0618h int 10h lea di,chrtab mov cx,[di] mov dx,400h add di,2 next: add dh,[di+1] add dl,[di+2] mov ah,2 mov bh,0 int 10h push cx mov cx,1 mov ah,10 mov al,[di] int 10h pop cx add di,3 loop next mov ah,4ch int 21h

10 code ends end start 实验报告:

1、自编程序。

2、调试中产生的问题。

11 实验六 磁盘文件操作程序

实验目的:

1、掌握利用FCB进行磁盘文件读写的方法。

2、掌握利用HANDLE进行磁盘文件读写的方法。

3、INT 21H 0FH,10H,14H,15H,16H,1AH号功能调用。

4、INT 21H 3CH,3DH,3FH,40H号功能调用。 实验内容:

一、文本文件内容显示程序: stack segment stack db 100h dup(?) stack ends data segment fcb db 36 dup(0) count db 0 char db 0 dta db 0 errmsg db \'file acce error\' data ends code segment main proc far aume cs:code,:stack start: push ds sub ax,ax push ax mov ax,data mov es,ax aume es:data mov si,5ch mov di,offset fcb mov cx,12 cld rep movsb mov ds,ax aume ds:data mov dx,offset dta mov ah,1ah int 21h mov dx,offset fcb mov ah,0fh int 21h cmp al,0 jnz error mov word ptr fcb+0ch,0 mov word ptr fcb+0eh,1

12 again: tab: eof: error: display disp1: mov fcb+20h,0 lea dx,fcb mov ah,14h int 21h cmp al,0 jnz error mov al,dta cmp al,1ah jz eof cmp al,9 jz tab call dispchar inc char cmp dta,0ah jnz again mov char,0 inc count cmp count,24 jnz again mov ah,0 int 16h mov count,0 jmp again mov al,\' \' call dispchar inc char test char,7 jz again jmp tab lea dx,fcb mov ah,10h int 21h ret lea bx,errmsg call display ret proc mov cx,30 mov al,[bx] call dispchar inc bx loop disp1 mov al,0dh call dispchar mov al,0ah

13 call dispchar ret display endp dispchar proc push bx mov bx,0 mov ah,14 int 10h pop bx ret dispchar endp main endp code ends end start

1、输入,汇编,连接此程序,用DEBUG将目的程序带参数调入,用D命令观看并记录 PSP中的FCB内容。

2、运行此程序。

二、磁盘文件拷贝程序(参考): stack segment stack db 100h dup(9) stack ends ; data segment sfile db 64 db ? db 64 dup(\' \') dfile db 64 db ? db 64 dup(\' \') ask1 db 0ah,0dh,\'please input source\' db \'file name:\',\'$\' ask2 db 0ah,0dh,\'please input destnation\' db \'file name:\',\'$\' note db 0ah,0dh,\'please insert diskettes\' db \'and strike any when ready \',\'$\' er1 db 0ah,0dh,\'create error $\' er2 db 0ah,0dh,\'open error$\' er3 db 0ah,0dh,\'read error$\' er4 db 0ah,0dh,\'write error$\' er5 db 0ah,0dh,\'close source file error\' er6 db 0ah,0dh,\'close dest file error\' bufr dw ? data ends code segment aume cs:code,ds:data,:stack

14 start proc push sub push mov mov mov lea call lea far ds ax,ax ax ax,data ds,ax es,ax dx,ask1 disp dx,sfile call mov xor mov mov lea call lea call mov xor mov mov lea call mov int call ret start endp disp proc mov int ret disp endp inpt proc mov int ret inpt endp copy proc mov lea mov int inpt cl,sfile+1 ch,ch si,cx [si+sfile+2],0 dx,ask2 disp dx,dfile inpt cl,dfile+1 ch,ch si,cx [si+dfile+2],0 dx,note disp ah,7 21h copy ah,9 21h ah,0ah 21h ah,3ch dx,dfile+2 cx,20h 21h

15 lea mov jc mov mov mov lea int lea mov jc r_w: mov mov lea int lea jc or je mov lea xchg int lea jc xchg jmp exit: mov int lea jc xchg mov int lea jc ret err: mov int xchg mov int call ret copy endp dx,er1 bx,ax err bufr,ax ah,3dh al,0 dx,sfile+2 21h dx,er2 bx,ax err cx,10h ah,3fh dx,sfile+2 21h dx,er3 err ax,ax exit ah,40h dx,sfile+2 bufr,bx 21h dx,er4 err bufr,bx r_w ah,3eh 21h dx,er5 err bufr,bx ah,3eh 21h dx,er6 err ah,3eh 21h bufr,bx ah,3eh 21h disp

16 ends end start 按COPY AAA BBB 格式要求改写此程序,取消人机对话,源文件和目的文件名由 命令行输入。 实验报告:

1、自编程序原稿和调试后的正确清单。

2、实验中产生的问题及体会。

3、实验记录。 code

实验一语言上机操作训练

实验一

实验一

实验一

实验一

C语言实验

C语言实验

人工智能实验一

数据库实验一

单片机实验一

实验一 语言实验
《实验一 语言实验.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档