汇编语言程序设计综合实验报告

时间:2024.4.20

 西安财经学院 信息学院

《汇编语言程序设计》    实验报告

实验名综合实验程序设计    实验室        实验日期   20##-12-15  

一、实验目的及要求

1.悉debug命令,学习汇编语言的调试环境;

2.熟练撑握一些简单程序的调试,理解基本的顺序结构、分支结构、循环结构及子程序的调试过程;

3.通过对一些综合程序的调试,加深对各种结构程序的理与学习掌握汇给语言编程思想。

二、实验环境

硬件环境:一台微型计算机;

软件环境:windows xp,debug环境,masm。

三、实验内容

人名排序程序。先从终端键入最多30个人名,当所有人名都进入后,按字母上升的次序排序,并在屏幕上显示已经排好序的人名。

四、设计:

设计思想:通过运用计算机汇编语言指令系统,将我们所要表达的语言转换成机器指令,任其识别。

这是一个在使用子程序为主的基础上,综合应用顺序结构、循环结构和分支等结构的程序,以实现从键盘终端输入的人名按字母上升的次序排序。它们的过程和功能如下:

1.B10READ 接收键入的人名存放在NAMEPAR中,并用空格符清除其后的单元;

2.D10STOR 把人名从NAMEPAR 传送到NAMETAB中,并用NAMECTR计数;

3.G10SORT 用气泡排序算法对人名排序,并用SWAPPED作为交换的标志控制循环结束。其中用调用子程序H10XCHG来交换两个人名串的位置,并设置SWAPPED标志。

4.K10DISP 显示已经排序好了的人名。

人名排序的程序实现图1:

汇编语言程序设计综合实验报告

图1

五、调试与测试

1.由于masm5程序安装于D,改变工作目录于D盘环境下;

2.用MASM程序把ASM文件转换成OBJ文件;

3.用LINK程序把OBJ文件转换成EXE文件;

4.用DEBUG 命令调试程序;

5.用U命令返汇编;

6.用单步执行命令t,逐步实现数据段及代码段的初始化;

7.将数据据段的地址赋给DI指针寄存器,并用单步执行命令T按顺序执行程序的下一步指令,调用地址为0039的程序段b10read程序段,为实现名字的输入与输出操作;

8.用u命令返汇编,找出将要执行的程序段,用g命令一步执行地址为0039到0047

之间和程序段,显示数据段中messg1的内容即字符串Name?;

9.继续返汇编,执行程序段0047到0041完成第一个名字的输入,输入名字zhanglina,ret返回到DOS系统下,程序在调用前的地址,用T命令继续下一条指令,比较输入字符和长度和0的大小;

10.若相等,则跳到a30程序段,执行无字符输入时的程序。由于输入的字符个数为9(从数据段DS中的0001单元可以得到),然后比较所输入的名字的个数与所设的名字的最多个数30的大小;

11.由于输入名字的个数为9小于最大字符串长度30,调用d10store程序段对输入的字符个数进行计数;

12.无条件跳转到a20loop程序段;

13.继续调用b10read程序段,实现名字的继续输入;

14.返汇编输入下一个名字yingtianzi;

15.同样进行字符串长度10(即DS:0001=0A)与0的比较,根据所输入的字符串再选择相应和操作;

16.比较所输入的名字的个数,是否达到所设的名字最大个数字30;

17.对所输入的名字操作完成之后,调用程序段对所输d10stor入的名字进行计数;

18.继续调用输入名字程序段b10read,名字未输完,继续输入名字;

19.用G命令一步执行输入名字为:duanxiangxiang,并将最终的结果显示出来;

20.比较所输入字符串的长度,是否为0,若不为0,则进行字符个数的比较;字符串的长度为0,则执行无字符输入时的程序段,由数据段得知所输入的字符串长度为14。

21.由于所输入的字符串长度不为0,则进行比较所输入的名字的个数是否达到所设的最大个数30;由数据段所得已经有两个名字被计数;

22. 继续调用d10stor程序段进行名字个数的计数。

23.调用b10read程序段,输入并显示字符串;

24.循环多次输入字符串,即输入多个人名字;

25.用D命令查看所输入的字符串;

26.用U命令返汇编,对所输入的名字进行排序并输出,程序正常结束;

五、[源程序清单]

Data segment

namepar label byte

maxnlen db 21

namelen db ?

namefld db 21 dup(?)

crlf db 13,10,'$'

endaddr dw ?

messg1 db 'name?','$'

messg2 db 'sorted names',13,10,'$'

namectr db 0

nametab db 30 dup (20 dup(' '))

namesav db 20 dup (?),13,10,'$'

swapped db 0

Data ends

Code segment

main proc far

assume cs:code,ds:data,es:data

start: push ds

mov ax,0

push ax

mov ax,data

mov ds,ax

mov es,ax

cld

lea di,nametab

a20loop:

call b10read

cmp namelen,0

jz a30

cmp namectr,30

je a30

call d10stor

jmp a20loop

a30: cmp namectr,1

jbe a40

call g10sort

call k10disp

a40: mov ax,4c00h

Int 21h

Main endp

b10read proc near

mov ah,09

lea dx ,messg1

int 21h

mov ah,0ah

lea dx,namepar

int 21h

mov ah,09

lea dx,crlf

int 21h

mov bh,0

mov bl ,namelen

mov cx,21

sub cx,bx

b20: mov namefld[bx],20h

inc bx

loop b20

ret

b10read endp

d10stor proc near

inc namectr

cld

lea si,namefld

mov cx,10

rep movsw

ret

d10stor endp

g10sort proc near

sub di ,40

mov endaddr,di

g20: mov swapped,0

lea si,nametab

g30: mov cx,20

mov di,si

add di,20

mov ax,di

mov bx,si

repe cmpsb

jbe g40

call h10xchg

g40: mov si,ax

cmp si,endaddr

jbe g30

cmp swapped,0

jnz g20

ret

g10sort endp

h10xchg proc near

mov cx,10

lea di , namesav

mov si,bx

rep movsw

mov cx,10

mov di,bx

rep movsw

mov cx ,10

lea si,namesav

rep movsw

mov swapped,1

ret

h10xchg endp

k10disp proc near

mov ah,09

lea dx,messg2

int 21h

lea si,nametab

k20: lea di,namesav

mov cx,10

rep movsw

mov ah,9

lea dx, namesav

int 21h

dec namectr

jnz k20

ret

K10disp endp

code ends

end start

六.总结

1.通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。

2.通过这次课程设计,我巩固所了学过的知识,能用汇编语言熟练地运用顺序、选择、循环、分支、子程序等结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用DEBUG指令。

3.在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读和调试一定规模的汇编语言程序的水平。


第二篇:汇编语言实验指导书


汇编语言实验指导书

前  言

汇编语言是计算机专业的一门重要的专业基础课,主要介绍汇编语言程序设计的基本原理和方法。汇编语言是一门理论性和实践性较强的课程,辅助课堂教学的实验有助于帮助学生理解汇编语言的基本原理,锻炼学生的动手能力,提高学生的综合应用知识的能力。

本实验指导书按照汇编语言程序设计的教学大纲要求编写。依据循序渐进、由浅入深的规律,通过实例复习巩固所学知识,借助实例开展汇编语言程序设计。通过这种既具有构造性又具有创造性的学习活动,更便于初学者的理解和掌握,通过上机实验,并在实验后完成实验报告,又能进一步加深和拓宽所学知识。为了帮助老师和学生开展实验,我们特编了这本实验指导书,希望能对我校的《汇编语言》教学工作有所帮助。

本实验指导书所有实例均在PC机上调试通过。

目    录

实验1  利用DEBUG调试汇编语言程序段………………………………………54

实验4 汇编语言程序上机过程    63

实验5  分支程序实验……………………………………………………………...65

实验6  循环程序实验……………………………………………………………...68

实验7  子程序实验…………………………………………………………… ….69

实验8  字符处理程序实验…………………………………………………………73

实验9  排序程序设计    77

实验利用DEBUG调试汇编语言程序段

一.实验目的

1.熟悉DEBUG有关命令的使用方法;

2.利用DEBUG掌握有关指令的功能;

3.利用DEBUG运行简单的程序段。

二.实验内容

1.进入和退出DEBUG程序;

2.学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应该试用一下;

3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

三.实验要求

1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;

2.作为例子,准备用A命令,输入在显示器上显示字符“$”的系统调用程序段;

3.编写将AX左移9位的程序段。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1.在DOS提示符下,进入DEBUG程序;

2.在DOS目录下启动DEBUG;

3.详细记录每一步所用的命令,以及查看结果的方法和具体结果。

六.实验报告要求

1.如何启动和退出DEBUG程序;

2.整理每个DEBUG命令使用的方法,实际示例及执行结果。

七.思考题

启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?

实验2  初级程序的编写与调试实验(一)

一.实验目的

1.进一步熟悉DEBUG命令;

2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;

3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;

4.掌握简单的汇编语言程序编写与调试。

二.实验内容

1.内存操作数及各种寻址方式使用;

2.求累加和程序;

3.多字节加法程序;

4.数据串搬家程序;

5.段寄存器概念及字符串传送指令练习。

三.实验要求

1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;

2.阅读数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP的内容;

3.用DEBUG的有关命令调试本实验中的求累加和程序、多字节加法程序、数据串搬家程序段。

四.实验环境

PC微机;

DOS操作系统或 Windows 操作系统;

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境。

五.实验步骤

1内存操作数及各种寻址方式使用

MOV    AX,1234

MOV    [1000],AX

MOV    BX,1002

MOV    BYTE PTR[BX],20

MOV    DL,39

INC      BX

MOV    [BX],DL

DEC     DL

MOV    SI,3

MOV    [BX+SI],DL

MOV    [BX+SI+1],DL

MOV    WORD PTR[BX+SI+2],2846

步骤:

(1) 用A命令键入上述程序,并用T命令逐条运行。

(2) 每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数存放法。

2.求累加和程序:

程序

MOV       BX,1000

MOV       CX,10

SUB        AX,AX

LOP: ADD     AL,[BX]

ADC    AH,0

INC         BX

J:    LOOP      LOP

INT3

步骤

(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值是否正确。

3.多字节加法程序

程序

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字节加数,均为低字节在前面。

4.数据串搬家程序

(1)用A命令键入下列程序:

MOV  SI,1000

MOV  DI,1500

MOV  CX,0FH

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命令检查目的地址处的字符与源串是否一致。

5.段寄存器概念及字符串传送指令练习

(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为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?)仍和原来一样。

6.自编程序

用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同多字节加法程序,调试并做记录。

六.实验报告要求

1.各项实验记录;

2.要求你修改的程序的清单(修改后)和调试记录;

3.自编程序原稿及调试后修正稿,写出原稿错在那里。

七.思考题

1.MOV BYTE PTR[BX],20

 MOV WORD PTR[BX+SI+2],2846

上述指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

2.用G命令运行多字节加法程序,并用D命令检查其结果(存放在哪里?),是否正确?

3.将多字节加法程序中的INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?试一试。

4.数据串搬家程序中的目的地址改为1002H,再运行此程序,看能不能把1000H开始的字符串搬到1002H开始的地方去?修改程序以做到这一点。
        实验初级程序的编写与调试实验(二)

一.实验目的

1.掌握无条件转移指令、条件转移指令;

2.掌握利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法;

3.掌握直接向视频RAM送ASCII码进行屏幕显示的方法;

4.掌握屏幕字符显示程序编写与调试。

二.实验内容

1.  字符、字符串的屏幕显示;

2.  直接向VRAM送ASCII码显示字符;

3.  用字符搜索法确定字符串长度;

4.  16进制数化ASCII码的一般方法(显示内存内容)。

三.实验要求

1.  仔细阅读有关无条件转移指令、条件转移指令的内容;

2.  阅读利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的内容;

3.阅读实验指导书中的字符串屏幕显示程序、字符屏幕显示程序、直接向VRAM送ASCII码显示字符程序、用字符搜索法确定字符串长度程序、16进制数化ASCII码的一般方法的程序段,调试上述程序。

四.实验环境

PC微机;

DOS操作系统或 Windows 操作系统;

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境。

五.实验步骤

1.利用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.OM的磁盘文件中。(存入前BX:CX必须置为文件长度值)。

(4)用Q命令退出DEBUG。

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

2.利用INT 21H 2号功能显示字符

(1)用A命令在100H处键入下列程序:

XOR   DL,DL

MOV  CX,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退出此程序,若一次不行可多做几次。

3.直接向VRAMASCII码显示字符

(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 21H 2号功能调用有何不同?

4.用字符搜索法确定字符串长度

(1)用A命令在100H开始的内存处键入下列程序

JMP    START

DB     'This is the program to measure'

DB     'the length of a string!$'

START: MOV     BX,102

MOV  AL,24

XOR   CL,CL

LOP: CMP   AL,[BX]

JZ       EXIT

INC    BX

INC    CL

JMP    LOP

EXIT:  INT3

(2)用G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一样?

5.用字符搜索法确定字符串长度

(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的控制字符用'.'代替。

六.实验报告要求

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

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

七.思考题

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

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

一.实验目的

熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。

二.实验内容

1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用;

2.伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;

3.利用的INT 21H的1号功能实现键盘输入的方法;

三.实验要求

1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;

2.了解利用的INT 21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法;

3.阅读下面程序段。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM。EXE,LINK。EXE,DEBUG。COM或宏汇编集成环境

五.实验步骤

程序

data         segment

message    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

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

start:      mov         ax,data

mov         ds,ax

mov         dx,offset message

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.若在源程序中把INT 21H的'H'省去,会产生什么现象?

2.把 INT 21H  4CH号功能改为 INT 20H,行不行?

实验5  分支程序实验

一.实验目的

1.  掌握分支程序的设计方法;

2.  掌握利用DEBUG修改参数、检查结果的方法;

3.  熟悉汇编语言源程序的编辑、汇编、连接及调试过程。

二.实验内容

1.编写一个程序,显示AL寄存器中的两位十六进制数

2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

三.实验要求

1.编写实验内容要求的两个程序;

2.写出调试以上程序,即修改程序参数,检查结果的操作方法;

3.熟悉源程序汇编、连接命令的使用方法即要回答的内容。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1. 用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。

2.对其进行汇编及连接,产生.EXE文件。

3.对.EXE文件进行调试运行。

(1)用DEBUG调试运行,学会修改AL内容的方法;

(2)对DSPKEY.EXE键入不同的字符,分别进行调试;

(3)在MS-DOS下运行这两个.EXE文件。

六.实验报告要求

1.画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

2.说明本实验是如何利用DEBUG进行调试的。

七.思考题

    编写显示AX中四位十六进制数程序,画出程序的流程图。

 

实验参考程序清单

(1)      显示AL中两位十六进制数程序:

;DISPHEX.ASM

CODE SEGMENT

      ASSUME CS:CODE

START:MOV AL,3EH

       MOV BL,AL

       MOV DL,AL

       MOV CL,4

       SHR DL,CL

       CMP DL,9

       JBE NEXT1

       ADD DL,7

NEXT1:ADD DL,30H

       MOV AH,2

       INT 21H                  ;显示高位ASCII码

       MOV DL,BL

       AND DL,0FH

       CMP DL,9

       JBE NEXT2

       ADD DL,7

NEXT2:ADD DL,30H

       MOV AH,2

           INT 21H                  ;显示低位ASCII码

           MOV AH,4CH

           INT 21H

CODE  ENDS                   ;返回DOS

       END START

(2)      显示键入字符程序

;DISPKEY.ASM

CODE   SEGEMENT

         ASSUME CS:CODE

START: MOV AH,1

         INT 21H                     ;等待键入字符,送AL

         CMP AL,0DH                 ;是否是回车符?

         JZ  DONE                   ;是则转DONE退出程序

         CMP AL,’0’

         JB NEXT

         CMP AL,’9’

         JA CHARUP

         MOV DL,AL

         MOV AH,2

         INT 21H

         JMP START

CHARUP:CMP AL,41H

         JB NEXT

         CMP AL,5AH

         JA CHRDN

DISPC: MOV DL,’C’

         MOV AH,2

         INT 21H

NEXT: JMP START

CHRDN:CMP AL,61H

         JB NEXT

         CMP AL,7AH

         JA NEXT

         JMP DISPC

DONE: MOV AH,4CH

        INT 21H

CODE: ENDS

        END START

实验6  循环程序实验

一.实验目的

1.掌握循环程序的设计方法;

2.学会针对不同的问题,选用不同的组织循环的方法;

3.进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。

二.实验内容

1.编写一个程序,显示BX寄存器中的两位十六进制数;

2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

三.实验要求

1.编写实验内容要求的两个程序;

2.写出调试以上程序,即修改程序参数,检查结果的操作方法;

3.熟悉源程序汇编、连接命令的使用方法即要回答的内容。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1.用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM;

2.对其进行汇编及连接,产生.EXE文件;

3.对.EXE文件进行调试运行。

(1)用DEBUG调试运行,学会修改AL内容的方法;

(2)对DSPKEY.EXE键入不同的字符,分别进行调试;

(3)在MS-DOS下运行这两个.EXE文件。

六.实验报告要求

画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

七.思考题

编写一循环程序,测量一字符串长度,并用16进制数显示之。

实验子程序实验

一.实验目的

1.掌握主程序与子程序之间的调用关系及调用方法;

2.掌握子程序调用过程中近程调用与远程调用的区别;

3.掌握通过堆栈转送参数的方法。

二.实验内容

1.将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。

2.编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。

三.实验要求

1.第一个实验程序用子程序的近程调用实现。由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个子程序的返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子程序的执行中,检查CS值是不变的。

2.第二个程序是利用远调用的方法调用子程序的。在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。

3.第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法的原理此处不再介绍。

4.预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图; 熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1.编辑、汇编两个源程序,生成相应的可执行文件(.EXE)

2.用DEBUG的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。

3.检查程序执行的结果是否正确。

六.实验报告要求

1.说明用堆栈传送参数的过程及其具体方法。

2.分析实验结果及所遇到问题,并说明解决的方法。

七.思考题

分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。

参考程序清单

 1.码型转换程序清单:

;CONV.ASN

DATA   SEGMENT

BUF     DB 0ABH,0CDH,0DEH,01H,02H,03H

DB 3AH,4BH,5CH,6FH

DATA   ENDS

CODE   SEGMENT

         ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

         MOV DS,AX

         MOV CX,10

         LEA   BX,BUF

AGAIN: MOV  AL,[BX]

         CALL   HEXASC

         INC   BX

         LOOP   AGAIN

         MOV  AH,4CH

         INT 21H

HEXASC PROC NEAR

MOV DL,AL

PUSH   CX

MOV   CL,4

SHR    DL,CL

POP    CX

CALL   DISP   ;显示高位HEX数

MOV    DL,AL

AND    DL,0FH

CALL   DISP

RET

HEXASC ENDP

DISP    PROP

        CMP   DL,9

        JBE    NEXT

        ADD   DL,7

NEXT: ADD  DL,30H

        MOV  AH,2

        INT  21H     ;显示

        RET

DISP    ENDP

CODE   ENDS

        END START

2.统计并显示某键入字符的个数的程序:

         ;COUNTER.ASM

DATA   SEGMENT

CHAR   DB  ‘b’

BUF     DB  50H,? ,50H DUP(?)

DATA   ENDS

MCODE  SEGMENT

         ASSUME CS: MCODE, DS: DATA

START: MOV  AX,DATA

         MOV  DS,AX

         LEA   DX,BUF

         MOV  AH,9

       INT   21H

         LEA   SI  BUF

         MOV  CL, [SI+1]

         MOV  CH, 0   ;CX中为字符串长度

         INC    SI

         INC    SI      ;SI指向串首址TABLE

         MOV  AL,CHAR

         MOV  AH,0     ;AX中为待查字符

         PUSH  SI

         PUSH  CX

PUSH   AX        ; 参数送堆栈

CALL   CHECK

POP    AX   :统计个数在AL中

        MOV   DL,CHAR

        MOV   AH,2

        INT    21H

        MOV   DL,AL

        AND   DL, 0FH

        CMP   DL,9

        JBE    NEXT

        ADD   DL,7

NEXT: ADD  DL,30H

        MOV  AH,2

        INT   21H        ;显示统计个数

        MOV  AH,4CH

        INT  21H

M CODE  ENDS

SCODE   SEGMENT

        ASSUME  CS:SCODE

CHECK  PROC  FAR

         PUSH  BP

         MOV   BP,SP

         MOV   SI,[BP+10]

         MOV   CX, [BP+8]

         MOV   AX, [BP+6]

         XOR   AH, AH

AGAIN: CMP   AL.[SI]

         JNE    NEXT1

         INC    AH

NEXT1: INC    SI

         LOOP  AGAIN

         MOV  AL, AH

         MOV  [BP+10],AX

         POP  BP

         RET  4

CHECK  ENDP

         END  START

实验字符处理程序实验

. 实验目的

1.熟悉串操作指令的功能与应用;

2.掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。

二.实验内容

1.字符串统计。自STRN开始的存储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。

2.在给定的字符串中,删除重复的字符,其余的字符向前递补。

. 实验要求

1.认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备好数据。

2.按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1.用1号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次执行,都能得到不同的结果。

2.删除字符串中重复字符,要求编写一个在同一个字符串中删除字符,并将其余字符向前递补的程序。

六.实验报告要求

1、对照参考程序,画出程序流程图。

2、总结字符串处理的编程方法,提出改进和完善此类程序的设计方案。

七.思考题

编写程序,在一个字符串中查找匹配字符。

参考程序清单

1.统计小写字母个数的程序清单:

;COUNTDC.ASM

DATA   SEGMENT

STRN   DB 80 DUP(?)

DATA   ENDS

CODE   SEGMENT

           ASSUME CS:CODE, DS:DATA

START: MOV  AX, DATA

MOV  DS, AX

LEA   DI, STAN

MOV  CL, 0

AGAIN: MOV  AH, 1

            INT  21H

CMP  AL,0DH

JZ   DONE

MOV  [DI],AL

INC  DI

INC  DL

JMP  AGAIN

DONE: LEA  SI,STRN

MOV  CH,0

MOV  BL,0

CLD

CYCLE:LODSB

           CMP  AL,61H

CMP  AL,7AH

JA  NEXT

INC  BL

NEXT: LOOP  CYCLE

MOV  AL,BL

MOV  AH,0

MOV  CL,10

DIV  CL                    ;十位数在AL中,个位数在AH中

XCHG  AH,AL         ;以下显示两位十进制数
MOV  DL,AH

OR  DL,30H

INT  21H

MOV  DL,AL

OR  DL,30H

MOV  AH,2

INT  21H

MOV  DL,AL

OR  DL,30H

INT  21H

MOV  DL,AL

OR  DL,30H

INT  21H

MOV  AH,4CH

INT  21H

CODE    ENDS

END START

2.删除字符串中重复字符的源程序清单:

;DELD.ASM

DATA     SEGMENT

STAN     DB 80 DUP(?)

LEN       DB ?

DATA     ENDS

CODE     SEGMENT

ASSUME CS: CODE,DS: DATA,ES: DATA
ATART: MOV  AX, DATA

MOV  DS,AX

MOV  ES,AX

LEA   SI,STRN

MOV  CL,0

AGAIN: MOV  AH,1

INT 21H

CMP  AL,0DH

JZ   DONE

MOV  [SI],AL

INC   SI

INC   CL

JMP   AGAIN

DONE:  MOV  CH,0

MOV  LEN,[CL]

REPEAT: PUSH SI

PUSH CX                   ;CX为内循环记数

PUSH CX                   ;DX为外循环记数

POP  DX

DEC  CX             

JE  NEXT1                 ;是最后一个字符,不再查找重复字符

MOV AL,[SI]

CMP AL,0

JE  NEXT1

COMP:   INC SI

           CMP AL,[SI]

JNE GOON                 ;为非重复字符

MOV BUTE PTR[SI],0

GOON:   LOOP COMP                ;查出与该字符重复的所有字符,并用0替换

NEXT1:  POP DX

POP SI

DEC DX`

JNZ REPEAT                ;对所有重复字符都进行查找

LEA SI,STRN                ;删除重复字符

MOV CL,LEN

MOV CH,0

CYCLE: MOV  AL,[SI] 

CMP  AL,0                    ;是重复字符吗?
JNZ  NEXT                    ;不是,查找下一个字符
DEC  CX                       ;递补字串长度送CX
JZ   DONE                     ;若是最后字符不递补
CALL  DELE                 ;删除该空字符并递补
DEC  SI                        ;对递补子串从头处理
NEXT: INC  SI
LOOP  CYCLE
MOV  AH,4CH
INT  21H
DELE  PROC
PUSH  SI
PUSH  CX
CLD
MOV  DI,SI              ;空字符处为目的首址
INC  SI                    ;下一个地址为源串首址
REP  MOVSB
POP  CX
POP  SI
RET

DELE     ENDP
CODE     ENDS

           END  START

实验9  排序程序设计

一.实验目的

掌握数据排序的一些常用算法,了解数列的有序、无序、升序和降序的概念。

二.实验内容

使用“冒泡排序”法,将内存中10个数据由小到大排序(每个数为16位二进制);

三.实验要求

1.复习排序的几个基本算法;

2.准备数据,按选择好的算法编写源程序。数据以DW定义和键盘输入两种方法提供。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1.将编写好的源程序输入,建立源程序文件且存盘;

2.汇编、连接和运行此程序;

3.运行成功后,将程序的数据区建立方式改为键盘输入,由小到大排序改为由大到小排序,修改后重新调试、运行;

4.记录并分析排序的效率。

六.实验报告要求

1.对照参考程序,画出程序流程图。

2.说明所使用算法,是否为最优算法,与你知道的其它算法比较,指出它们的差别。

七.思考题

如果要求显示排序结果,程序应如何修改?

参考程序清单

   code       segment

org       100h

assume  cs:code,ds:code

main:          jmp       start

array           dw        1234h,5673h,7fffh,8000h,0dffh

dw        0ab5h,0369h,005fh,5634h,9069h

count          equ       $-array

start:           mov      cx,count

shr        cx,1

dec       cx

mov      bl,-1

again:          mov      dx,cx

and       bl,bl

je          exit

xor       bl,bl

xor       si,si

again1:        mov      ax,array[si]

cmp      ax,array[si+2]

jle         nchg

xchg     array[si+2],ax

mov      array[si],ax

mov      bl,-1

nchg:          inc        si

inc        si

dec       dx

jnz        again1

loop      again

exit:            int        20h

code            ends

end       main

实验10  计算机钢琴程序

一.实验目的

1.掌握利用PC机扬声器发出不同频率声音的方法;

2.学习利用系统功能调用从键盘上读取字符的方法。

二.实验内容

编写程序,使PC机成为一架可弹奏的“钢琴”。当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I八个音调。当按下CTRL-C,则退出“钢琴”状态。

三.实验要求

1.了解PC机发音的原理;

2.编写发音程序。

PC机扬声器电路图如下:

汇编语言实验指导书

通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。当与门打开后,经过放大器的放大作用,便可驱动扬声器发出不同频率的音调。要使音调的声音持续一端时间,只要插入一端延时程序之后,再将扬声器切断(关闭与门)。

另外,要使计算机成为可弹奏的钢琴,需要使用系统调用的01H功能以接收键入字符,并且要建立一张表,使键入字符与频率构成一个对应关系。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1.将编写好的源程序输入,建立源程序文件且存盘;

2.汇编、连接和运行此程序;

3.运行成功后,改变常数或频率值,看看声音的变化。

六.实验报告要求

1.实验记录和体会。

2.自编程序。

七.思考题

如果要演奏高音、低音,程序应如何修改?

程序框图如下

 

实验11  键盘和窗口程序

一.实验目的

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

2.熟悉键盘的扫描码和ASCII码的关系;

3.掌握利用INT 10H功能调用实现窗口功能的方法。

二.实验内容

1.编写键盘输入程序;

2.编写设置屏幕窗口程序。

三.实验要求

1.复习INT 16H  2号功能调用;

2.阅读键盘的扫描码和ASCII码的关系的内容;

3.复习INT 10H功能。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1.将键盘输入程序输入,建立源程序文件且存盘;

2.汇编、连接、运行此程序,观察并记录各个键的扫描码,ASCII码及对应字符。汇编、连接和运行此程序;

3.将窗口程序输入,建立源程序文件且存盘;

4.汇编、连接、运行此程序,观察按不同键所产生的效果。

六.实验报告要求

1.对照参考程序,画出程序流程图。

2.记录程序运行结果。

七.思考题

窗口程序所产生的窗口效果有何缺陷?试修改之。

参考程序清单

1.键盘输入程序

PRO_NAM  SEGMENT

ASSUME    CS:PRO_NAM

ORG     100H

AGAIN:      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

BINIHEX    PROC   NEAR

MOV    CH,4

ROTATE:    MOV    CL,4

ROL     BX,CL

MOV    AL,BL

AND     AL,0FH

ADD     AL,30H

CMP     AL,3AH

JL         PRINT

ADD     AL,7

PRINT:       MOV    DL,AL

MOV    AH,2

INT      21H

DEC     CH

JNZ      ROTATE

RET

BINIHEX    ENDP

PRO_NAM  ENDS

END     AGAIN

2窗口程序

code            segment

assume  cs:code,ss: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

实验12  磁盘文件操作程序

一.实验目的

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

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

3.INT 21H的0FH、10H、14H、15H、16H、1AH号功能调用;

4.INT 21H的3CH、3DH、3FH、40H号功能调用。

二.实验内容

1.编写文本文件内容显示程序;

2.编写磁盘文件拷贝程序。

三.实验要求

1.复习INT 21H  0FH、10H、14H、15H、16H、1AH、3CH、3DH、3FH、40H号功能调用

2.阅读有关磁盘文件的FCB、HANDLE的内容。

四.实验环境

PC微机

DOS操作系统或 Windows 操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1.将文本文件内容显示程序输入,建立源程序文件且存盘;

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

3.将磁盘文件拷贝程序输入,建立源程序文件且存盘;

4.汇编、连接、运行此程序,观察按不同键所产生的效果。

六.实验报告要求

1.对照参考程序,画出程序流程图;

2.实验中产生的问题及体会;

3.实验记录。

七.思考题

按COPY AAA BBB 格式要求改写此程序,取消人机对话,源文件和目的文件名由命令行输入。

 参考程序清单

1.文本文件内容显示程序:

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 access error'

data            ends

code            segment

main           proc      far

assume  cs:code,ss:stack

start:         push      ds

sub       ax,ax

push      ax

mov      ax,data

mov      es,ax

assume  es:data

mov      si,5ch

mov      di,offset fcb

mov      cx,12

cld

rep        movsb

mov      ds,ax

assume  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

mov      fcb+20h,0

again:       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

tab:          mov      al,' '

call       dispchar

inc        char

test       char,7

jz          again

jmp       tab

eof:          lea        dx,fcb

mov      ah,10h

int        21h

ret

error:        lea        bx,errmsg

call       display

ret

display        proc

mov      cx,30

disp1:       mov      al,[bx]

call       dispchar

inc        bx

loop      disp1

mov      al,0dh

call       dispchar

mov      al,0ah

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

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

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

start            proc      far

push      ds

sub       ax,ax

push      ax

mov      ax,data

mov      ds,ax

mov      es,ax

lea        dx,ask1

call       disp

lea        dx,sfile

call       inpt

mov      cl,sfile+1

xor       ch,ch

mov      si,cx

mov      [si+sfile+2],0

lea        dx,ask2

call       disp

lea        dx,dfile

call       inpt

mov      cl,dfile+1

xor       ch,ch

mov      si,cx

mov      [si+dfile+2],0

lea        dx,note

call       disp

mov      ah,7

int        21h

call       copy

ret

start            endp

disp            proc

mov      ah,9

int        21h

ret

disp            endp

inpt             proc

mov      ah,0ah

int        21h

ret

inpt             endp

copy           proc

mov      ah,3ch

lea        dx,dfile+2

mov      cx,20h

int        21h

lea        dx,er1

mov      bx,ax

jc          err

mov      bufr,ax

mov      ah,3dh

mov      al,0

lea        dx,sfile+2

int        21h

lea        dx,er2

mov      bx,ax

jc          err

r_w:         mov      cx,10h

mov      ah,3fh

lea        dx,sfile+2

int        21h

lea        dx,er3

jc          err

or         ax,ax

je          exit

mov      ah,40h

lea        dx,sfile+2

xchg     bufr,bx

int        21h

lea        dx,er4

jc          err

xchg     bufr,bx

jmp       r_w

exit:         mov      ah,3eh

int        21h

lea        dx,er5

jc          err

xchg     bufr,bx

mov      ah,3eh

int        21h

lea        dx,er6

jc          err

ret

err:           mov      ah,3eh

int        21h

xchg     bufr,bx

mov      ah,3eh

int        21h

call       disp

ret

copy           endp

code            ends

end       start

更多相关推荐:
汇编语言程序设计实验报告

实验报告实验名称专业班级信息安全学号姓名实验一汇编语言上机过程和Debug常用调试命令一实验目的学习程序设计的基本方法和技能熟练掌握用汇编语言设计编写调试和运行程序的方法二实验题目熟悉与实验有关的系统软件如编辑...

汇编语言程序设计实验报告

汇编语言实验报告题目1实验方法2用表格形式显示字符3分类统计字符个数4查找电话号码学生学院计算机学院专业班级06学号31学生姓名指导教师2008年6月1日计算机学院06专业班组学号姓名协作者实验题目实验方法实验...

汇编语言程序设计实验报告

学生实验报告册20xx20xx学年第1学期实验名称汇编语言程序设计学院信息与电气工程学院班级09级计算机科学与技术2班学号13514031姓名于志佳指导教师徐静实验一DEBUG的使用实验目的1熟悉在计算机上建立...

汇编语言子程序结构实验报告

XXXX学院信息学院实验名顺序结构程序设计实验室实验楼403实验日期20xx61912345

汇编语言程序设计实验报告

汇编语言程序设计实验报告实验室S318最后一次实验时间20xx年5月18日第12周星期二12节学院计算机科学与技术学院专业计算机科学与技术实验一实验题目认识Tddebug集成环境实验目的1234熟悉汇编程序的开...

汇编语言程序设计实验报告

12345678910111213141516171819

汇编语言程序设计实验报告

汇编语言程序设计实验报告姓名班级汇编语言程序设计实验报告姓名班级汇编语言程序设计实验报告姓名班级

简易计算器的汇编语言程序设计报告

设计内容计算器程序设计学院信息管理学院班级会计1204班制作人员史凡史明坤学号1220xx4149指导教师周作涛1目录一程序功能设计界面错误未定义书签二程序流程图及其说明错误未定义书签1程序流程图42流程图说明...

微机原理课程设计报告简易计算器的汇编语言程序设计报告

目录1总体方案论证12程序流程图及其说明221程序流程图222流程图说明43软件设计431字符输入及存储设计432加减法运算的判断设计533加减法运算的设计6331数据的提取6332加法运算6333减法运算83...

汇编语言程序设计报告

课程设计报告20xx020xx年度第1学期名称汇编语言程序设计报告题目院系电气与电子工程学院班级电子0902学号学生姓名指导教师廖斌设计周数成绩日期年月日课程课程设计综合实验报告一课程设计综合实验的目的与要求1...

汇编语言程序设计实验报告

汇编语言程序设计学生姓名学院专业学号指导教师20xx年11月27日实验三循环程序设计一实验目的1学习调试程序查找逻辑错误2掌握循环程序设计的方法3掌握正确分配与使用寄存器二实验内容与要求题目1数组中是一组无符号...

汇编语言程序设计实验报告-实验三

汇编语言程序设计实验报告学院宁夏大学新华学院系别信息与计算机科学系姓名学号实验三数据串传送和查表程序实验目的通过实验掌握下列知识1堆栈堆栈指示器SP和堆栈操作指令PUSHPOP2段寄存器和物理地址计算3查表法和...

汇编语言程序设计实验报告(33篇)