当前位置:首页 >> 其它课程 >> 汇编语言与接口技术实验讲义

汇编语言与接口技术实验讲义


汇编语言上机指导书 湖南师范大学工学院 计算机专业用

实验一 DOS 常用命令及 8086 指令使用 实验目的: 通过实验掌握下列知识: 1、DOS命令: DIR,DEL,RENAME,FORMAT,COPY。 2、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG 3、DEBUG命令: A,D,E,F,H,R,T,U。 4、BCD码,

ASCII码及用16进制数表示二进制码的方法。 5、8086寄存器: AX,BX,CX,DX,F,IP。 内容及步骤: 一、DOS常用命令练习: 1、将新盘插到 A驱动器中,用DIR命令查看盘上文件。 2、用命令 COPY DEBUG.COM BUG 复制一个文件。 3、用命令 RENAME BUG BG 将BUG 文件改为BG。 4、用命令 DEL BG 将文件BG删除。 在操作时要注意提示信息,并按提示操作。 二、DEBUG 命令使用: 1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。

2、用命令 F 100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D 100 10F 观察内存中的16进制码及屏幕右边的ASCII 字符。

4、用命令 F 110 11F 41 重复上二项实验,观察结果并比较。

5、用命令 E 100 30 31 32 …… 3F将30H-3FH写入地址为100开 始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符 的ASCII码?

6、用H命令检查下列各组16进制数加减结果并和你的手算结果比 较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H

(5)A758,347FH

7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志 位中ZF,CF和AF的内容。

8、用R命令将AX,BX内容改写为1050H及23A8H。

三、8086常用指令练习 1、传送指令 1)用A命令在内存100H处键入下列内容: MOV MOV XCHG MOV MOV MOV XCHG AX,1234 BX,5678 AX,BX AH,35 AL,48 DX,75AB AX,DX

2)用U命令检查键入的程序并记录,特别注意左边的机器码。 3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器 及IP的变化情况。并注意标志位有无变化。 2、加减法指令: 1)用A命令在内存100H处键入下列内容:

MOV MOV ADD SUB MOV MOV ADD SUB SUB

AH,34 AL,22 AL,AH AL,78 CX,1284 DX,5678 CX,DX CX,AX CX,CX

2)用U命令检查键入的程序及对应的机器码。 3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。 思考:这次运行还是打入T,行不行?怎么办?用R命令检查一下IP的 内容。注意T命令与IP的关系。 3、带进位加减法: 1)用A命令在内存200H处键入下列内容,并用U命令检查: MOV MOV MOV MOV ADD ADC MOV AH,12 AL,84 CH,56 CL,78 AL,CL AH,CH DH,A7

MOV SUB SBB

DL,58 DL,7F DH,34

2)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。 3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修 改并运 行之。 4、BCD码加减法 1)内容: MOV ADD DAA 2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄 存器及AF内容。 实验报告要求: 1、16进制数加减法手算结果及实验结果 2、8086常用指令练习部分的逐条运行记录,思考结果及自编程序 运行记录 (列出自编程序)。 附: DEBUG 使用: 1、打 DEBUG 进入 DEBUG,显示提示苻 '_ '。 2、退出DEBUG命令:Q 3、显示内存命令:D 起始地址 结束地址 AL,58 AL,25

4、修改内存命令:E 起始地址,连续修改打空格键。打回车键退出 E命令。 5、检查寄存器命令:R 标志位显示 1 CF ZF SF AF OF PF DF IF CY ZR NG AC OV PE DN EI 0 NC NZ PL NA NV PO UP DI

6、修改寄存器命令:R 寄存器名 7、小汇编命令:A 起始地址,不输入指令打回车键退出A命令。 8、反汇编命令:U 起始地址 结束地址 9、文件命名命令:N 盘号:文件名 10、读文件命令:L 内存地址 11、写文件命令:W 内存地址 10、读扇区命令:L 内存地址 盘号(0--A:,1--B:) 扇区号 扇区数 11、写扇区命令:W 内存地址 盘号 扇区号 扇区数 12、运行命令:G=起始地址 结束(断点)地址 13、单步命令:T=起始地址 运行指令数,进入子程序内部。

14、单步命令:P=起始地址 运行指令数,不进入子程序内部。 15、内存搬家命令:M 起始地址 结束地址 目的地址

实验二 内存操作数及寻址方法 实验目的: 通过实验掌握下列知识: 1、DEBUG命令:G,N,W,L及Q。 2、8086系统中数据在内存中的存放方式和内存操作数的几种寻址 方式。 3、8086指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。 4、8086汇编语言伪操作:BYTE PTR,WORD PTR。 5、求累加和程序和多字节加减法程序。 实验内容和步骤: 一、内存操作数及各种寻址方式使用: 内容: MOV MOV MOV MOV MOV INC MOV AX,1234 [1000],AX BX,1002 BYTE PTR[BX],20 DL,39 BX [BX],DL

DEC MOV MOV MOV MOV 步骤:

DL SI,3 [BX+SI],DL [BX+SI+1],DL WORD PTR[BX+SI+2],2846

1)用A命令键入上述程序,并用T命令逐条运行。 2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关 内存单元的内容并注明是什么寻址方式。 注意D命令显示结果中右边的ASCII字符及双字节数存放法。 思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。 二、求累加和程序: 程序: MOV MOV SUB LOP: ADD ADC INC J: LOOP INT3 步骤: BX,1000 CX,10 AX,AX AL,[BX] AH,0 BX LOP

1)用A命令将程序键入到100H开始的内存中,在键入时记下标号 LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。 2)用命令N AA将此程序命名为文件AA(文件名可任取)。 3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址 减去开 始地址) 4)用命令W 100将此程序存到AA命名的磁盘文件中。 5)用命令Q退出DEBUG。 6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程 序。 若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。 7)用E命令在内存地址1000H处键入16个数字 8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上, 检查 AX,BX的值是否符合你的预计值。 9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计 一样, 若不一样,检查程序是否有错。 10)重复G J与T,再检查AX是否正确。 11)用G命令使程序运行到结束,检查AX值是否正确。 三、多字节加法程序。 程序:

MOV DI,1000 MOV CX,8 MOV SI,2000 CLC LOP: MOV AL,[SI]

ADC [DI],AL INC SI INC DI LOOP LOP INT 20 步骤: 1)用命令键入此程序 2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处 键入一个8字节加数,均为低字节在前面。 3)。用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是 否正确? 4)将INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行? 试一试。 四。自编程序: 用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果 存放 地址同上题。调试并做记录。

实验报告要求: 1、各项实验结果记录。 2、自编程序原稿及调试后修正稿,写出原稿错在那里。

实验三 汇编语言程序上机过程 实验目的: 1、掌握常用工具软件 PE,MASM和LINK的使用。 2、伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。 3、利用的 1号功能实现键盘输入的方法。 4、了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系 统的方法。 程序: data segment db 'This is a sample program of keyboard and

message disply' db data ends

0dh,0ah,'Please strike the key!',0dh,0ah,'$'

stack segment para stack 'stack' db stack ends code segment assume cs:code,ds:data,ss:stack 50 dup(?)

start: mov mov mov mov int again: mov int cmp je cmp jc cmp ja and nd: mov mov int jmp exit: mov int code ends end

ax,data ds,ax dx,offset message ah,9 21h ah,1 21h al,1bh exit al,61h nd al,7ah nd al,11011111b dl,al ah,2 21h again ah,4ch 21h

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,行不行?

实验四 数据串传送和查表程序 实验目的: 通过实验掌握下列知识: 1、堆栈。堆栈指示器SP和堆栈操作指令PUSH。POP。 2、段寄存器和物理地址计算。

3、查表法和查表指令XLAT。 4、数据串传送程序和数据串传送指令MOVS。STOS及重复前辍REP。 5、循环指令ROL。逻辑与指令AND和清方向位指令CLD。 6、伪操作指令DB。 实验内容及步骤: 一、利用查表方法把DX的内容(16进制数)转换成ASCII码: 1、用A命令键入下列程序: MOV BX,1000 MOV DI,2000 MOV CX,4 LOP: PUSH CX

MOV CL,4 ROL DX,CL POP CX MOV AL,DL AND AL,OF XLAT CLD STOSB LOOP LOP INT 20 2、用A命令在1000H处键入下列ASCII码并用D命令检查之:

DB `0 1 2 3 4 5 6 7 8 9 A B C D E F' 用D命令检查时注意左边的ASCII码值和右边的字符。 3、用R命令给DX送一个四位的16进制数(例7F8E)。 4、用T命令逐条运行这程序到LOOP指令处,观察并记录每次运行结 果,特别是SP和堆栈内容(用D命令检查) 5、用G命令将此程序运行到结束,并用D命令检查2000H处所转换的 结果。可注意屏幕右边的ASCII字符与DX是否一致。 二、数据串搬家程序: 1、用A命令键入下列程序: MOV SI,1000 MOV DI,1500 MOV CX,0F LOP: MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP LOP INT 20 2、用A命令DB伪指令在1000H键入下列字符串: ‘IBM_PC COMPUTER' 3、用G命令运行此程序,并用D命令检查目的地址处的字符与源串 是否一致。

4、若此程序中的目的地址改为1002H,再运行此程序,看能不能把 1000H开始的 字符串搬到1002H开始的地方去?修改程序以做到这一点。 三、段寄存器概念及字符串传送指令练习: 1、用A命令键入下列程序: MOV SI,0 MOV DI,0 MOV AX,1000 MOV DS,AX MOV AX,1500 MOV ES,AX MOV CX,0F CLD REP MOVSB INT 20 2、 用A命令DB伪指令在1000:0000处键入字符串'IBM_PC COMPUTER', 并用D命检查之 3、用D命令检查0F00:1000处内容,看是否一样。为什么? 4、用G命令运行此程序,检查目的地址1500:0000处内容。并记下 DS与ES值。 5、修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地 址和目的物理地址(是多少?)仍和原来一样。

实验报告要求: 1、各项实验记录和思考题。 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 POP CX LOOP DELY POP CX LOOP LOP INT 20 J

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 POP CX LOOP DELY POP CX J

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、8086指令:JZ,JNZ,JC,JNC,CMP,SHR。 2、程序:用字符搜索法确定字符串长度。 3、程序:16进制数化为ASCII码的一般方法。 实验内容及步骤: 一、用字符搜索法确定字符串长度:

1、用A命令在100H开始的内存处键入下列程序: JMP START DB DB 'This is the program to measure' 'the length of a string!$' BX,102

START: MOV

MOV AL,24 XOR CL,CL LOP: CMP JZ AL,[BX]

EXIT

INC BX INC CL JMP LOP EXIT: INT3 2、用G命令运行此程序,并检查CL的统计长度是否与你自己统计的 实际长度是否一样? 二、16进制数化ASCII码的一般方法(显示内存内容) 1、用A命令在100H处键入下列程序: MOVSI,0 MOVBL,10 LOP: MOVDL,[SI] MOVCL,4 SHRDL,CL

CMPDL,0A JC J1

ADD DL,7 J1: ADD DL,30 MOV AH,2 INT 21 MOV DL,[SI] AND DL,0F CMP DL,0A JC J2

ADD DL,7 J2: ADD DL,30 MOV AH,2 INT 21 MOV DL,20 MOV AH,2 INT 21 INC SI DEC BL JNZ LOP INT 20 2、用N,W命令将此程序用CC.COM文件名存入磁盘。

3、用Q命令退出DEBUG。 4、在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出 内存从0000H开始的16个字节的内容,若有错误,用DEBUG检查之。 5、自编程序:修改上面程序,使除以16进制数形式显示内存内容外, 还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符 用'.'代替。 三、综合程序(选做):测量一字符串长度,并用16进制数显示之 程序: JMP START DB string。' DB DB 0D,0A 'the length of the string is: $' AH,9 'This is a program to measure the length of a

START: MOV

MOV DX,102 INT 21 MOV BX,101 MOV AL,'$' MOV DH,FF LOP: INC INC DH CMP AL,[BX] BX

JNZ LOP MOV CH,2 MOV CL,4 LOP1: ROL DH,CL

MOV DL,DH AND DL,0F ADD DL,30 CMP DL,3A JC J

ADD DL,7 J: MOV INT 21 DEC CH JNZ LOP1 INT 20 键入此程序,存入???.COM文件中并在DOS命令状态下直接运行之, 若未出现预期结果,用DEBUG检查有否错误? 实验报告要求: 1、自编程序草稿及调试后的正确程序。 2、实验体会。 AH,2

实验七 分枝程序 实验目的: 1、掌握利用间接转移指令JMP BX实现多岔分枝的方法。 2、宏替换指令MACRO及ENDM。 3、符号扩展指令CBW。 实验程序: disp macro msg lea mov int mov int endm stack segment stack db stack data parm ends segment db 16 dup(?) offset bra,offset brb,offset brc offset brd,offset bre,offset brf 'I like my IBM-PC!$' 256 dup(0) dx,msg ah,9 21h ah,4ch 21h

brtable dw dw msga db

msgb msgc msgd msge msgf errms data code

db db db db db db ends

'How are you!$' 'Nibao College$' 'This is a sample$' 'Wellcome use my coputer!$' 'Theassemder language of 8086$' 'Error!! invalid parameter!!$'

segment assume cs:code,ds:data,ss:stack

start: mov ax,data mov mov lea mov cld rep mov cmp jc mov sub jc movsb ds,ax parm,2 err al,parm+2 al,30h err es,ax si,80h di,parm cx,16

cmp jnc lea cbw add add jmp err: bra: brb: brc: brd: bre: brf: code

al,6 err bx,brtable

ax,ax bx,ax [bx]

disp errms disp msga disp msgb disp msgc disp msgd disp msge disp msgf ends end start

实验步骤: 1、输入并汇编此程序。要求生成一个 .LST文件。用TYPE命令检 查 .LST文件,观察宏替换命令产生的指令集。 2、将OBJ文件连接成EXE文件(假设为AA。EXE)。 3、用命令DEBUG AA.EXE XXX (XXX为任意字符串)将AA.EXE带参数 调入DEBUG用D命令观察DS:0080处的命令行,记录80H处的内容和字符

个数的关糸。 4、退出DEBUG。直接带参数运行此程序: AA n(n=0--5) 依次观察并记录 n从0到5时的运行结果。

实验八 多重循环程序 实验目的: 1、掌握多重循环程序和排序程序设计方法。 2、掌握带符号数的比较转移指令:JL,JLE,JG,JGE 3、伪指令 EQU 及操作符 '$'的使用。 4、 COM文件的要求和生成过程。 程序: code segment org 100h

assume cs:code,ds:code main: array jmp dw dw count equ start 1234h,5673h,7fffh,8000h,0dffh 0ab5h,0369h,005fh,5634h,9069h $-array cx,count cx,1 cx

start: mov shr dec

mov again: mov and je xor xor again1: mov cmp jle

bl,-1 dx,cx bl,bl exit bl,bl si,si ax,array[si] ax,array[si+2] nchg

xchg array[si+2],ax mov mov nchg: inc inc dec jnz array[si],ax bl,-1 si si dx again1

loop again exit: code int ends end 实验步骤: 1、输入,汇编并连接此程序。忽略连接时的无堆栈告警。 main 20h

2、用EXE2BIN将 .exe文件转换为 。COM文件,命令格式: EXE2BIN? ???.EXE ????.COM 3、在DEBUG下运行此程序,记录运行结果。 4、将转移指令JLE改为JBE,JGE和JAE,分别运行并记录排序结果。

实验九 子程序 实验目的: 1、掌握利用堆栈传递参数的子程序调用方法。 2、掌握子程序递归调用方法。 3、过程调用伪指令: PROC,ENDP,NEAR和FAR。 4、8086指令: CALL,RET,RET n。 5、利用RET指令退出EXE文件的方法。 实验内容及步骤: 一、利用堆栈传递参数的子程序调用。(求累加和) 程序: stack segment stack db stack data ary1 ends segment db 1,2,3,4,5,6,7,8,9,10 $-ary1 ? 256 dup(0)

count1 equ sum1 dw

ary2

db

10,11,12,13,14,15,16,17,18 $-ary2 ?

count2 equ sum2 data main dw ends

segment assume cs:main,ds:data,ss:stack

start push

proc far ds xor ax,ax

push ax mov mov mov ax,data ds,ax ax,count1

push ax lea ax,ary1

push ax call far ptr sum mov ax,count2

push ax lea ax,ary2

push ax call far ptr sum

ret start main proce endp ends segment assume cs: proce sum mov mov mov xor adn: add adc inc procfar bp,sp cx,[bp+6] bx,[bp+4] ax,ax al,[bx] ah,0 bx

loop adn mov ret sum proce ends end 步骤: 1、输入,汇编并将此程序连接成EXE文件。 2、用DEBUG的断点命令和T命令运行此程序,观察并记录每次过程 star [bx],ax 4 endp

调用及进出 栈指令前后(带';'的语句)的SP和堆栈内容。 3、记录最后结果:SUM1,SUM2的段及偏移地址和它们的内容。 二、子程序递归调用(求阶乘)。 程序: stack segment stack db stack data resul data code main ends segment dw ends segment proc far assume cs:code,ds:data,ss:stack start: push ds sub ax,ax ? 100h dup(?)

push ax mov mov mov ax,data ds,ax ax,5

call fact mov resul,ax

ret fact proc and jne mov ret iia: push ax dec al al,al iia al,1

call fact x2: pop mul ret fact main code endp endp ends end 步骤: 1、将程序输入,汇编并连接成EXE文件。 2、用DEBUG的断点和T命令检查并记录每层递归嵌套过程的堆栈和 AL内容。 3、修改源程序,将阶乘数 3 改为本程序的最大允许值(是多少?), 重新汇编连接之。用DEBUG运行并记录RESUL单元内容。 start cx cl

4、若要在DOS命令下直接运行并显示阶乘结果(16进制形式),试修 改程序并 调试运行。(机动) 实验报告: 1、实验记录。 2、自编程序。 3、体会和意见。

实验十 音乐程序 实验目的: 1、掌握PC机发音原理及音乐程序编制方法。 2、8086指令: IN,OUT,DIV,OR 实验内容: 一、发音程序。 1、用DEBUG输入下列程序: MOV IN AND LOP: XOR OUT MOV DEY: DX,4000H AL,61H AL,FCH AL,02H 61H,AL CX,0140H

LOOP LOP

DEC JNE INT INT

DX LOP 21H 20H

2、在DEBUG下运行此程序,改变延时时间常数,注意声音高低变化。 二、音乐程序。 1、输入,汇编,连接并运行下列程序: stacksg segment para stack dw stacksg ends datasg segment tiger db 0ah,0dh,'two tiger。$' dw 2 dup(262,294,330,262) 2 dup(330,349,392) 2 dup(392,440,392,349,330,262) 2 dup(294,196,262),0ffffh dw 10 dup(25),50,25,25,50 2 dup(12,12,12,12,25,25) 2 dup(25,25,50) 32 dup(?)

tig_freq dw dw dw tig_time dw dw datasg ends

codesg segment assume cs:codesg,ds:datasg,ss:stacksg

start: mov mov lea mov int lea lea

ax,datasg ds,ax dx,tiger ah,9 21h si,tig_freq bp,ds:tig_time

call play mov int play freq: proc mov cmp je mov di,[si] di,0ffffh end_ply bx,ds:[bp] ah,4ch 21h

call sound add add jmp end_ply: play sound endp proc si,2 bp,2 freq ret

mov out mov mov div out mov out in mov or out wait: mov

al,0b6h 43h,al dx,14h ax,4f38h di 42h,al al,ah 42h,al al,61h ah,al al,3 61h,al cx,5000 loop spkr_on bx wait al,ah 61h,al

spkr_on: dec jnz mov out ret sound endp

codesg ends end start

2、修改程序,使它能演奏一首你所喜爱的歌曲。 3、若歌曲中有休止符,怎么办? 实验报告: 1、实验记录和体会。 2、自编程序。


更多相关文档:

《汇编语言与接口技术》实验指导(2013版)

汇编语言与接口技术实验指导 河南大学计算机与信息工程学院 2012.9 汇编语言实验环境和要求《汇编语言》是计算机及计算机类专业学生的专业基础课,是培养学生直接...

汇编语言与接口技术实验讲义

汇编语言上机指导书 湖南师范大学工学院 计算机专业用 实验一 DOS 常用命令及 8086 指令使用 实验目的: 通过实验掌握下列知识: 1、DOS命令: DIR,DEL,RENAME,...

汇编语言与接口技术实验

汇编语言与接口技术实验_信息与通信_工程科技_专业资料。使用定时器T0中断方式设计一个时钟表,用两位数码管分别显示时、分、秒。 1)分析本实验控制原理,画出程序...

汇编语言与接口技术实验

汇编语言与接口技术实验_计算机软件及应用_IT/计算机_专业资料。PC机发送一个字符给单片机,单片机接收到后即在个位、十位数码管上进行显示,同时将其回发给PC机。...

汇编语言与接口技术实验

汇编语言与接口技术实验_信息与通信_工程科技_专业资料。在实验中,要求设计一个应用系统,每间隔1秒钟,LED0闪烁一次,蜂鸣器产生声音一次,要求用定时器中断实现程序中...

汇编语言与接口技术实验

汇编语言与接口技术实验_信息与通信_工程科技_专业资料。在实验中,要求设计一个应用系统,当LED0闪烁时,蜂鸣器产生声音。 1)分析本实验控制原理,画出程序流程图。 ...

汇编语言与接口技术实验报告

汇编语言与接口技术实验报告_其它课程_高中教育_教育专区。汇编语言与接口技术实验报告,浙江科技学院汇编语言与接口技术 实验报告 学专班学姓 院: 信息与电子工程学院...

汇编语言与接口技术实验报告

汇编语言与接口技术实验报告_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档汇编语言与接口技术实验报告_计算机软件及应用_IT/计算机_专业...

汇编语言与接口技术实验指导书V1.1

汇编语言与接口技术实验指导书V1.1_互联网_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 汇编语言与接口技术实验指导书V1.1_互联网_IT/计算机_专业...

汇编语言与接口技术实验五实验报告

汇编语言与接口技术实验五实验报告_调查/报告_表格/模板_实用文档。广州大学汇编实验广州大学汇编语言与接口技术实验报告 广州大学学生实验报告开课学院及实验室:计算机...
更多相关标签:
汇编语言与接口技术 | 汇编语言及接口技术 | 汇编语言实验报告 | 汇编语言程序设计实验 | 汇编语言实验 | 汇编语言实验7 | 汇编语言实验10 | 汇编语言实验答案 |
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com