文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言实验指导书(用)

汇编语言实验指导书(用)

汇编语言实验指导书(用)
汇编语言实验指导书(用)

汇编语言程序设计实验指导书

汇编语言程序设计课程建设小组

二〇〇五年九月

内容简介

本书是为了配合《IBM汇编语言程序设计》课程而编写的实验指导书。配合微型计算机汇编语言程序设计的教学体系及方法,通过上机实验循序渐进地加深对8086/88汇编语言的认识与理解,进而掌握程序设计的一般方法和技巧,并通过对程序的调试和运行,熟悉DEBUG的使用。

本书编排了9个单元实验:3个验证性实验,5个设计性实验,1个综合性实验(选做)。每个验证性实验包括实验目的,实验环境,实验内容,原理和步骤等,设计性实验给出了基本要求,启发学生的思考和动手的能力。

本书可供各高校计算机专业、非计算机专业开设汇编语言程序设计课程用作实验教材。

前言

汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的惟一语言。因而,对程序的存储空间和运行时间要求较高的一些实际任务,一般都使用汇编语言进行编程处理;至于很多实时性强、需要直接控制硬件的应用场合,则更是非用汇编语言不可了。

汇编语言程序设计是高等院校计算机科学与技术专业“汇编语言程序设计”必修课,实践环节是帮助学生加深认识和理解理论教学知识的重要途径。学生应该通过大量的上机实验熟悉8086 CPU的指令功能、用途和使用技巧,进而通过循序渐进的程序设计练习,验证各类指令的功能和提高程序设计的能力。

本实验指导书由9个单元实验组成:汇编语言的调试和运行、堆栈指令和算术指令、逻辑指令和串处理指令、汇编语言程序格式、逻辑指令和程序设计、循环程序设计、子程序结构、DOS功能调用和综合实验。本书所给实验程序全部通过上机验证,各实验之间相互配合而又自成体系,易于为不同类型专业按其实验教学要求选做,所以本书具有较宽的适用面。

目录

实验一汇编语言的调试和运行 (1)

实验二堆栈指令和算术指令 (2)

实验三逻辑指令和串处理指令 (4)

实验四汇编语言程序格式 (6)

实验五分支程序设计 (5)

实验六循环程序设计 (9)

实验七子程序结构 (13)

实验八 DOS功能调用 (16)

实验九综合实验 (20)

附录 1 ASCII码表 (22)

附录 2 汇编语言常用出错信息 (23)

附录 3 DEBUG命令 (27)

附录 4 C语言调用汇编语言 (30)

实验一汇编语言的调试和运行

一、实验目的

1、熟悉DEBUG程序和命令,并用它运行基本指令和察看运行结果。

○1怎样调用Debug

②如何显示和修改内存单元

③如何显示和修改CPU的寄存器

④各标志位的状态是如何表示的,怎样修改标志寄存器

⑤怎样汇编与反汇编

⑥怎样执行程序

⑦怎样跟踪程序

⑧怎样命名和读写文件

⑨怎样退出Debug

2、熟悉汇编中通用传送指令。

3、理解指令不同的寻址方式,注意规定或限制使用的寄存器如:双操作数

指令中,源操作数和目的操作数的地址不能同时为存储器地址,段跨越

前缀不能使用CS,操作对象是地址还是地址中的内容,指令隐含使用的

寄存器。

二、实验内容

1、键入 DEBUG 进入 DEBUG 控制状态,显示提示符 '- '。

2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。

3、用命令 D100 10F 观察内存中的十六进制码及屏幕右边的ASCII字符。

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

5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内

存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的

ASCII码?

6、用DEBUG调试和运行下列程序,记录所用的DEBUG命令和运行结果。

MOV WORD PTR [1100],3445

MOV WORD PTR [1102],5678

MOV WORD PTR [1106],6732

MOV AX,[1100]

SUB AX,[1102]

ADD AX,[1106]

MOV [1104],AX

HLT

其中粗斜体的数字可以修改。

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

程序内容:

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字符及双字节数存放法。

思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

实验二堆栈指令和算术指令

一、实验目的

1、熟悉掌握堆栈操作指令、算术指令的格式、功能及用法。

2、熟悉二进制数的四则运算指令,掌握各种运算指令的格式、用法、寻址方

式和对标志位的影响,特别是对溢出标志位CF和OF的影响。

二、实验内容

1、写出书中习题3.13所用指令,用DEBUG运行并察看和验证运行结果,在实

验报告中画出堆栈区和SP的内容变化过程示意图。

2、用加减法指令计算下列各组十六进制数加减结果并和你的手算结果比较:

(1)34H,22H (2)56H,78H (3)A5,79H

(4)1284H,5678H (5)A758H,347FH

1)用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中

ZF,CF和AF的内容。

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

3、加减法指令:

1) 用A命令在内存100H处键入下列内容:

MOV AH,34

MOV AL,22

ADD AL,AH

SUB AL,78

MOV CX,1284

MOV DX,5678

ADD CX,DX

SUB CX,AX

SUB CX,CX

2) 用U命令检查键入的程序及对应的机器码。

3) 用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。

思考:这次运行还是键入T,行不行?怎么办?用R命令检查一下IP的内容。注意T 命令与IP的关系。

4、带进位加减法:

1) 用A命令在内存200H处键入下列内容,并用U命令检查:

MOV AH,12

MOV AL,84

MOV CH,56

MOV CL,78

ADD AL,CL

ADC AH,CH

MOV DH,A7

MOV DL,58

SUB DL,7F

SBB DH,34

2) 用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。

3) 上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运

行之。

5、BCD码加减法

1)内容:

MOV AL,58

ADD AL,25

DAA

2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF

内容。

6、自编程序

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

三、实验报告要求:

1、十六进制数加减法手算结果及实验结果

2、8088常用指令练习部分的逐条运行记录,思考结果及自编程序运行记录

(列出自编程序)。

3、各项实验结果记录。

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

实验三逻辑指令和串处理指令

一、实验目的

熟悉逻辑运算指令和串处理指令

二、实验内容及步骤

1、编写程序实现AL中数乘10。

2、作业内容上机验证(分析结果编写程序上机验证)

3、分析、理解、跟踪执行下列程序。

mov si,2000

mov di,3000

mov cx,000a

rep movsb

hlt

4、数据串搬家程序:

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开始的地方去?修改程序以做到这点。

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

三、实验报告要求

1、各项实验记录和思考题。

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

实验四汇编语言程序格式

一、实验目的

1、熟悉掌握编译和连接程序的使用。

2、熟悉掌握汇编源程序的书写格式。

3、熟悉伪指令的用法,可以编写简单的源程序。

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

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

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

4)了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。

5)利用DOS功能调用INT 21H的2号和9号功能进行屏幕显示的方法。

二、实验要求

1、程序要结构化:简明、易读和易调试。

2、执行速度较快。

3、占用存储空间较少。

三、实验内容

1、编一段程序,在内存中自SQTAB(0200H)地址开始的连续10个单元中

存放0-9的平方值。要求利用简单的查表法NUM(0210)单元中指定数(0-9)的平方值,并将所求平方值存入RESULT(0211)单元。

2、通过编辑、编译和连接、调试书中119、146页的例题熟悉掌握编译和连

接程序的使用。

3、作书中作业4.5 4.8 4.9 4.10 4.13 4.14 ,并编写小程序验证。

4、编写4.17 程序,并上机运行。

实验五分支程序设计

一、实验目的

1、熟练掌握逻辑运算和转移指令

1) 逻辑运算指令

2) 标号和无条件转移指令

3) 比较指令和条件转移指令

2、掌握分支程序设计的原理和方法,重点掌握各种分支程序中形成和判断条件

而产生的程序段的设计方法和技巧.

二、实验内容

1、练习逻辑运算指令、比较指令和条件转移指令的功能、用法以及与标志位

的关系和可用的寻址方式

2、用地址表法,完成下面要求的多分支程序的设计。根据MODE单元中的模

式字(0-7)分别转向L0-L7标号处执行。L0-L7处分别完成显示‘0’-‘7’字符。

当MODE=0时,转L0标号,完成显示‘0’

当MODE=1时,转L1标号,完成显示‘1’

当MODE=2时,转L2标号,完成显示‘2’

当MODE=3时,转L3标号,完成显示‘3’

当MODE=4时,转L4标号,完成显示‘4’

当MODE=5时,转L5标号,完成显示‘5’

当MODE=6时,转L6标号,完成显示‘6’

当MODE=7时,转L7标号,完成显示‘7’

3、编制程序实现如下操作:

设有10个学生成绩,分别统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并存放于S5、S6、S7、S8、S9、S10单元中。

程序清单:

;统计学生成绩

DATA SEGMENT

GRADE DW 95H,60H,75H,92H,71H,86H,54H,89H,83H,76H

N EQU ($—GRADE)/2

ORG 30H

S5 DW0

S6 DW0

S7 DW0

S8 DW0

S9 DW0

S10 DW0

DATA ENDS

STACK SEGMENT STACK

STA DB 20 DUP (0)

TOP EQU $—STA

STACK ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA,SS:STACK

START:PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

MOV CX,N

LEA BX,GRADE ;成绩表首地址

COMPARE:

MOV AX,[BX]

CMP AX,60H ;<60?

JL FIVE

CMP AX,70H ;<70?

JL SIX

CMP AX,80H ;<80?

JL SEVEN

CMP AX,90H ;<90?

JL EIGHT

CMP AX,100H ;=100

JNE NINE

INC S10

JMP CHA

NINE:INC S9

JMP CHA

EIGHT:INC S8

JMP CHA

SEVEN:INC S7

JMP CHA

SIX:INC S6

JMP CHA

FIVE:INC S5

JMP CHA

CHA:ADD BX,2 ;循环学生人数

LOOP COMPARE

RET

MAIN ENDP

CODE ENDS

END START

1、在BLOCK开始的内存单元中有若干以字节为单位的正、负数,自编程序,试统计其中正数的个数存放于M_DATA单元中,负数的个数存放于P_DATA 单元中。

2、在BLOCK开始的内存单元中有若干以字节为单位的奇、偶数,自编程序,试统计其中偶数的个数存放于M_DATA单元中,奇数的个数存放于P_DATA 单元中。

部分程序清单

BLOCK DB 37,—90,—32,60,—7,—120

COUNT EQU $—BLOCK

P_DATA DB COUNT DCP (0)

M_DATA DB COUNT DCP (0)

……………

LEA SI,BLOOK

LEA DI,P_DATA

LEA BX,M_DATA

MOV CX,COUNT

RETRY:MOV AL,[SI]

CMP AL,0

JGE PP

MOV [BX],AL

INC BX

JMP LOOP1

PP:MOV [DI],AL

INC DI

LOOP1:INC SI

LOOP RETRY

……………

要求:

1.分析问题,画出算法框图。写实验预习报告。

2.用汇编语言格式编写程序。

3.在DOS下编辑、汇编、连接程序。

4.用Debug调试程序。

5.在DOS下运行并分析结果。

6.写实验报告,画出算法框图。

实验六循环程序设计

一.实验目的

1.掌握循环程序设计的方法(两重性循环结构)

2.掌握正确分配与使用寄存器。

3.掌握控制循环的方法。

二.实验内容与要求

1.请编写一程序,从附加段中一个未排序的字数组中,找出最大数和最小数分别存放在AX 和BX寄存器中。

2.以GRADE为首地址的10个字的数组中保存有学生成绩。建立一个10个字的RNAK 数组,并根据GRADE中的学生成绩将学生名次填入RANK

数组中(提示:一个学生的名次等于成绩高于等于该学生的人数加1)。

寄存器分配情况说明如下:

AX 存放当前被测学生的成绩

BX 存放当前被测学生的相对地址指针

CX 内循环计数值

DX 存放当前被测学生的名次计数值

SI 内循环测试时的地址指针

DI 外循环计数值

部分程序清单(将程序补充完整)

;建立学生成绩名次表

DATA SEGMENT

GRADE DW 88H,75H,95H,63H,98H,78H,87H,73H,90H,60H

COUNT EQU ($-GRADE) /2

ORG 20H

RANK DW 10 DUP(?)

DATA ENDS

STACK SEGMENT STACK

STA DB 20 DUP (20H)

TOP EQU $—STA

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV SP,TOP

MOV DI,;成绩的个数

MOV BX,0

LOOP1: MOV AX,GRADE[BX],1

MOV CX,COUNT

SI,GRADE ;成绩的存放地址

NEXT:CMP AX,[SI]

NO_COUNT

INC WORD PTR RANK[BX];存放学生名次

NO_COUNT:ADD SI,2

NEXT

ADD BX,2

DEC DI

LOOP1

MOV AX,4C00H

INT 21H

CODE ENDS

END START

3、一个数组DATAX,其中的数据排列规律是:头三项是0,0,1,以

每项的值均是前三项之和。试将项值小于等于2000以前的各项数据填入数组DATAX中。

算法:n≥4时:①a n=a n-1+a n-2+a n-3

②a n=2a n-1—a n-4

要求:按上述两种算法编程

4、从DATA_BUF(1000H)开始存放50个字节数据,编写程序将这些数据由小到大排序,排序后的数据仍放在该区域中。

要求原始数据在源程序中给出,排序前后的数据以每行10个的格式显示在屏幕上。

实验提示:

参见教材第134页,例5.7所用的数据如下:

stack segment para stack 'stack'

db 1024 dup (?)

stack ends

data segment para 'data'

data_buf db 50,49,48,47,46,45,44,43,42,41

db 40,39,38,37,36,35,34,33,32,31

db 30,29,28,27,26,25,24,23,22,21

db 20,19,18,17,16,15,14,13,12,11

db 10, 9, 8, 7, 6, 5, 4, 3, 2, 1

msg1 db 'Raw Data:', 0dh, 0ah, '$'

msg2 db 'Sorted Data:', 0dh, 0ah, '$'

data ends

5、测量一字符串长度,并用十六进制数显示之

程序内容:

JMP START

DB 'This is a program to measure the length of a string。'

DB 0D,0A

DB 'the length of the string is: $'

START: MOV AH,9

MOV DX,102

INT 21

MOV BX,101

MOV AL,24

MOV DH,FF

LOP: INC BX

INC DH

CMP AL,[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 AH,2

INT 21

DEC CH

JNZ LOP1

INT 20

键入此程序,存入https://www.wendangku.net/doc/472566238.html,文件中并在DOS命令状态下直接运行之,若未出现预期结果,用DEBUG检查有否错误?

三、实验步骤和要求

1、分析问题,画出算法框图。写实验预习报告。

2、用汇编语言格式编写程序。

3、在DOS下编辑、汇编、连接程序。

4、用Debug调试程序。

5、在DOS下运行并分析结果。

6、写实验报告,画出算法框图。

实验七子程序结构

一、实验目的

1、掌握程序设计方法,合理划分层次。

2、掌握子程序的调用与返回的方法。

3、了解子程序的嵌套与递归。

二.实验内容与要求

1、将主程序中BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出

来。

实验参考程序:

code segment

main proc far

assume cs:code

start: push ds

xor ax,ax

push ax

mov bx,1234h

call sub1

ret

main endp

sub1 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 printit

add al,7h

printit: mov dl,al

mov ah,2

int 21h

dec ch

jnz rotate

ret

sub1 endp

code ends

end

要求:

1)分析问题,画出算法框图。写实验预习报告。

2)用汇编语言格式编写程序。

3)在上题的基础,将MEM中的4个字节内容输出到屏幕显示。

4)在DOS下编辑、汇编、连接程序。

5)在DOS下运行并分析结果。

6)写实验报告,画出算法框图。

2、编制一程序,要求键入一个班的学生成绩,并存放于50字的ERADE数组中,然后根据ERADE中的成绩,把学生名次填入50字的RANK数组中,再按学号顺序把名次从终端上显示出来。

提示:

1)程序MAIN

功能:根据输入的学生成绩,计算并显示出学生名次。

2)程序INPUT

功能:接收一个班级学生的成绩,各成绩之间用空格隔开。

3)程序RANKP

功能:计算一个班级学生的名次。(可参照循环程序(一)中的程序段)

4)程序OUTPUT

功能:输出(显示)一个班级的学生名次

5)程序DECIBIN

功能:十进制转换二进制,存入BX

6)程序BINDEC

功能:十进制转换二进制,并在屏幕上显示。

7)程序DEC_DIV

功能:BX的内容除以CX的内容,并在屏幕上显示一位商。

部分程序清单:

1)键入学生成绩(成绩之间用空格间隔,回车结束输入)

INPUT PROC

MOV SI,0

MOV COUNT,0

ENTER:CALL DECIBIN

INC COUNT

CMP DL,‘’

JZ STORE

CMP DL,0DH

JZ EXIT

JMP RET1

STORE:MOV GRADE [SI],BX

ADD SI,2

JMP ENTER

EXIT:MOV GRADE [SI],BX

RET1:RET

INPUT ENDP

2)十进制转换成二进制

DECIBIN PROC

MOV BX,0

NEM:MOV AH,1

INT 21H

MOV DL,AL

CMP AL,30H

JL EXIT1

CMP AL,39H

JG EXIT

SUB AL,30H

CBW

XCHG AX,BX

MOV CX,10

MUL CL

XCHG AX,BX

ADD BX,AX

JMP NEW

EXIT1:RET

DECIBIN ENDP

3)二进制转换成十进制

BINIDEC PROC

PUSH BX

PUSH CX

PUSH SI

PUSH DI

MOV CX,100

CALL DEC_DIV

MOV CX,10

CALL DEC_DIV

MOV CX,1

CALL DEC_DIV

POP DI

POP SI

POP CX

POP BX

RET

BINIDEC ENDP

4)十进制转换成ASCII码,并输出

DEC_DIV PROC

MOV AX,BX

MOV DX,0

DIV CX

MOV BX,DX

MOV DL,AL

ADD DL,30H

MOV AH,02H

INT 21H

RET

DEC_DIV ENDP

要求:

1)自编程序主程序MAIN,子程序OUTPUT和子程序RANKP。

2)将上述程序与自编程序统调。

3)输入本班级某门基础课成绩。

思考题

1) 写出4位BCD码转二进制数的算法。

2) 写出AX中进二制数转BCD码的算法。

3) 将上述子程序结构改为模块化程序设计。

实验八DOS功能调用

一、实验目的:

1、掌握DOS功能调用的使用方法。

2、进一步熟悉子程序的应用。

二、实验内容:

1、从键盘输入数据并显示

1) 从键盘输入字符。

2) 删除指定的字符。

3) 将剩余字符在屏幕上显示。

参考程序:

data segment

buffer db 80 dup(?)

flag db ?

data ends

code segment

main proc far

assume cs:code,ds:data

汇编实验指导书

汇编语言实验指导书 授课教师李娜 授课对象 05计科、网络、06计科 授课时间 07-08学年第一学期 授课地点一、二、四机房 课程简介 一.实验课程的性质和目的 汇编语言程序设计是计算机专业的一门专业基础课,是学好计算机底层系统构成的课程。汇编语言程序设计是一门实用性很强的课程。汇编语言程序程序设计实验教案是教案的重要环节,是理论教案的重要补充,只有通过实验,学生才能熟练掌握汇编语言程序设计的基本方法,并对其有更深刻的认识。本门实验课是单独设课。 二.实验教案的方法和手段 为了提高实验教案效果,实验严把预习、实验、实验报告3个环节。实验在软件实验室机房完成,单独设组,个人完成实验,每项实验以小班为单位,实验考勤采用电子签到制度。 预习:安排学生学习实验内容,了解实验的过程和操作规程,并布置思考题和预习报告,让学生有目的地去查阅与实验相关的资料。 实验:实验开始前由指导教师讲解实验要点,提出注意事项。实验过程中,主题是学生,教师是辅助作用,要求学生独立完成实验。 实验报告:实验结束后,强调学生及时填写实验记录表,对实验过程进行详细记录,对实验结果细致地分析、讨论,完成相关思考题作业。 三.课程学时 本实验课实验总学时为32学时。 四.实验成绩的考核方法 汇编语言实验成绩按百分制核定。实验过程占50%,实验报告占50%。五.大纲的适用范围 本大纲适用计算机科学与技术专业和计算机应用与维护专业学生。 六.主要设备与器材配备

七.实验项目汇总表 实验一熟悉汇编语言编程环境 一.实验目的 <1)熟悉汇编语言编程环境; <2)掌握基本汇编程序。。 二.实验仪器设备 计算机 三.实验重点、难点 熟悉汇编语言编程环境; DEBUG常用命令的正确使用。-T/-U/-Q/-G 四.实验题目 比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘metch’,否则,显示’no match’。 五.实验内容、步骤 1.调用EDIT建立ASM源文件。 2.用汇编程序MASM对源文件汇编产生目标文件OBJ。 <如有问题,可用DEBUG调试。) 3.用LINK联接程序产生执行文件EXE。 4.执行程序。 附:源程序 ;PROGRAM TITLE GOES HERE—COMPARE STRING ;******************************************************** data segment string1 db 'move the cursor backward.' String2 db 'move the cursor backward.'

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

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

计算机组成原理实验1-汇编语言实验

微处理器与接口技术 实验指导

实验一监控程序与汇编语言程序设计实验 一、实验要求 1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。 2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。 3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。 4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。 二、实验目的 【1】学习和了解TEC-XP16教学实验系统监控命令的用法; 【2】学习和了解TEC-XP16教学实验系统的指令系统;

【3】学习简单的TEC-XP16教学实验系统汇编程序设计。 三、实验注意事项 (一)实验箱检查 【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。 【2】五位控制开关的功能示意图如下: 【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】 (二)软件操作注意事项 【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。即选定的是用户实验时通讯线接的PC机的端口; 【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试; 【3】有时若TEC-XP16实验系统不通讯,也可以重新启动软件或是重新启动PC再试; 【4】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

汇编语言程序设计实验指导书

汇编语言实验报告题目:子程序设计 班级:rbw111 姓名:吴德鹏 学号:201107092416 完成日期:2013.12.22

概述: 《汇编语言程序设计》实验指导书是非计算机、非电类的其他专业:包括纺织、机械、热能等专业的《汇编语言程序设计》课程配套使用的实验指导。在理论课的教学中着重介绍微机系统的组成及工作原理,针对INTEL 8088/8086系列介绍相应的指令系统和汇编语言程序设计,介绍了接口的一般概念和CPU与外设交换信息的常用方式的软硬件设计思想。实验课测重培养学生的汇编语言设计能力及一些简单接口程序设计的方法,训练学生汇编语言程序调试的能力。通过实验,使学生加深对课堂教学内容的理解,培养学生综合使用微型机的初步能力。其中实验一、实验二是后续实验的基础,通过该实验,学生应能了解汇编语言源程序的一般格式,熟悉汇编语言程序的上机过程和调试程序的基本方法,重点放在DEBUG调试程序的命令使用方法上。也可以将实验一、实验二合并为一个实验,按照*实验一的要求进行;实验三、四、五进一步培养学生的各种结构的程序设计能力;实验六主要是简单接口的综合应用,为学生建立一个微机应用系统的概念,使学生通过具体的实例对相关的接口有感性认识,提高学生的实际动手能力和独立解决问题的能力。教师可以根据专业学时的多少和学生的具体情况来开设实验。 一、实验目的: 1.进一步熟悉分支、循环程序设计的方法及用DEBUG调式程序的方法。 2.熟练掌握子程序的参数传递的方式、子程序的嵌套、递归调用及其设计方法和技巧。 3、培养学生创新精神和独立运用所学基本知识和技能分析问题和解决问题的能力。 二、实验属性: 显示学生名次表:编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字的grade数组中,其中grade+i保存学号为i+1的学生的成绩。然后根据grade中的学生成绩,把学生名次填入50字的rank数组中,其中rank+i的内容是学号为i+1学生的名次。再按学号顺序把名次从终端上显示出来。 说明:程序设计中应体现出模块化程序设计思想和方法。 三、实验仪器设备: 提供实验条件。 Pc机并在debug的环境下进行调试

汇编语言上机实验指导书(不含源代码)

汇编语言上机实验指导书 一、概述 上机实验总学时为14学时,其中综合性实验为2学时。实验共有6项暂定为7次,每次2学时。 1.实验辅导的主要内容 实验辅导的内容包括每个实验的实验目的;实验内容;对实验的算法及实验方法的必要说明;实验准备;实验步骤;实验报告要求;实验程序及参考框图。开始的实验介绍较细,后面的实验简要介绍。 2.实验的软硬件要求 关于汇编语言程序设计的硬件要求不高,有IBM-PC/XT即可,但应有彩色显示器以便进行图形实验。软件方面应有MASM.EXE5.0版(包括LINK.EXE),与MS-DOS版本配套的DEBUG程序和EDIT.EXE编辑软件(其它编辑软件也可以)。 3.加强实践能力的培养 实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。其中包括: 实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等; 开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。 对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或自己编制程序加以实现。 实验一汇编语言运行环境及方法、简单程序设计(2学时、验证性) 1.实验目的: (1) 熟悉汇编语言运行环境和方法 (2)了解如何使用汇编语言编制程序 (3) 熟悉DEBUG有关命令的使用方法 (4) 利用DEBUG掌握有关指令的功能 (5) 利用DEBUG运行简单的程序段 2.实验内容 (1)学会输入、编辑汇编语言程序 (2)学会对汇编语言程序进行汇编、连接和运行 (3)进入和退出DEBUG程序 (4)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应试一下。 3.实验准备 (1)仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。 (2)准备好源程序清单、设计好调试步骤、测试方法、对运行结果的分析。 (3) 编写一个程序:比较2个字符串所含的字符是否相同。若相同则显示’Match.’,否则显示’No match!’; (1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。 4.实验步骤 (1)在DOS提示符下,进入MASM目录。 (2)在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。 ①调用edit输入、编辑源程序并保存在指定的目录中;例:edit abc.asm ②用汇编程序masm对源程序汇编产生目标文件obj。例:masm abc 不断修改错误,直至汇编通过为止。 ③用连接程序link产生执行文件exe.例:link abc

汇编语言程序设计-实验指导书

汇编语言程序设计 实验指导书 编写:郑利平 合肥工业大学计算机与信息学院 2008-9-1

汇编语言程序设计实验指导书 《汇编语言程序设计》实验是学习本课程的每个考生必须要通过的一个重要的实践环节,根据“汇编语言程序设计自学考试大纲”规定:上机实验单独作为本课程的实验考核成绩。《汇编语言程序设计》是一门实践性很强的课程,只有多上机操作,对汇编语言源程序进行编辑、汇编、连接、调试和运行全过程的训练,才能加深对本课程基本知识的理解,才能熟练地掌握程序设计的方法与技巧,才能学好本课程。 本实验指导书是完全按照《汇编语言程序设计自学考试大纲》中“实验大纲”的要求编写的,为便于考生较好完成上机操作和实验报告,特此作出如下说明和要求: (1)做好上机实验的准备工作:应考者对每个实验需要进行预习,了解相关内容和具体要求,熟悉上机操作步骤,学会相关系统软件的使用,掌握各种操作调试命令。 (2)编写源程序:按照实验题目的要求,应考者要事先独立完成汇编语言源程序的编写工作,并对源程序进行认真的静态检查,减少错误的发生。 (3)完成实验报告:做完上机实验,应考者要严格按照实验报告的格式要求写出实验报告。实验报告的内容为:实验名称、实验的目的、实验的内容和要求、实验步骤、实验结果并附上源程序清单和程序流程图。

实验一DEBUG的使用 (一)实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 (二)实验设备 硬件环境:IBM-PC及其兼容机 软件环境:操作系统DOS3.0版本以上 调试程序https://www.wendangku.net/doc/472566238.html, (三)实验内容和要求 实验内容: 1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H 单元中。 实验要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 (四)预习要求 1、复习DOS启动方式和DOS有关命令的使用; 2、阅读本书后的附录,熟悉掌握DEBUG调试程序中的A、D、E、G、Q、R、T、U命令的书写格式及功能; 3、复习寻址方式和相关的数据传送指令及算术运算指令。 (五)实验步骤 1、启动DOS操作系统 2、运行https://www.wendangku.net/doc/472566238.html,程序(若当前盘为C) C:>DEBUG↙ – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG 命令) 3、用“A”命令编辑和汇编源程序 –A ↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙

汇编语言实验报告——累加

《汇编语言》实验报告 ——累加器制作 2014级计算机科学与工程学院 学号: 姓名 一、实验要求: 1.显示 INPUT N :,提示用户输入数字字串 2.检测输入字串的合法性,非法给出提示 3.将输入数字字串转化为数值,存入变量n 4.累加1~n ,存入变量sum 5.以十进制显示sum 二、流程图: 开始 输入 判断是否为回车 判断是否为数字 是 转化为数值,将堆栈中 的高位数字乘10然后与低位数字相加,放入堆 栈 否 显示“error ” 结束 否 是 判断cx=0 否 将CX加到A X中 是 得出sum的值 将结果除以10并将余数存入堆栈,累计位数cx,直至商为0 将堆栈中的数字依次输出显示,直至cx=0

三、源代码: DATAS SEGMENT str1 db "Input N:","$" str2 db "sum=","$" str3 db 0ah,"error","$" n dw 0 sum dw 0 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX LEA dx,str1;输出提示符 mov ah,9 int 21h input: mov ah,01;输入数字 int 21h cmp al,0dh;判断是否为回车 jz step1 cmp al,"0";判断字符合法性 jb error cmp al,"9" ja error sub al,"0";转化为ASCII码 mov ah,0;此段将高位乘10 push ax mov ax,n shl ax,1 push ax mov cl,2 shl ax,cl

余敦辉《汇编语言》实验指导书实验1-实验3

《汇编语言》实验指导书

目录 实验一Debug命令的使用 (3) 实验二基本汇编指令的使用 (9) 实验三汇编语言程序的调试与运行 (13) 实验四系统功能调用程序的调试与运行………………错误!未定义书签。 实验五分支程序设计……………………………………错误!未定义书签。 实验六循环程序设计……………………………………错误!未定义书签。 实验七子程序设计………………………………………错误!未定义书签。 实验八高级汇编语言程序设计…………………………错误!未定义书签。 实验九I/O程序设计……………………………………错误!未定义书签。 实验十中断程序设计……………………………………错误!未定义书签。 实验十一综合程序设计 (38)

实验一Debug命令的使用 一、知识点 1、DEBUG简介 DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。在汇编语言程序调试中很常用。 DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。 DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。 DEBUG命令的使用注意问题: (1)字母不分大小写 (2)只使用十六进制数,但没有带后缀字母“H” (3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。 (4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。 2、Debug的调入和退出 以WIN7环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态: C:\Documents and Settings\lfy> 然后输入命令: >Debug 进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。 退出Debug的命令:Q 3、Debug常用命令 (1)汇编命令A,格式为: - A [地址] 功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。若不指定地址,则系统从默认的地址开始存放。按回车键退出汇编状态 应用:用于调试一条指令或几条指令组成的一个程序段。

汇编语言实验指导书.

汇编语言实验指导书纪平张雷编写 安徽工业大学计算机学院 二00四年三月 目录 实验一DEBUG的启动及其基本命令的使用 (2 实验二内存操作数及寻址方法 (6 实验三汇编语言程序的调试与运行 (8 实验四查表程序设计 (10 实验五系统功能调用 (12 实验六循环程序设计 (13 实验七分支程序设计 (15 实验八子程序设计 (18 实验九综合程序设计 (20 附录实验报告 (21 实验一DEBUG的启动及其基本命令的使用一.实验目的: 掌握DEBUG 的基本命令及其功能 二.实验内容:

DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1、DEBUG程序的启动 在DOS提示符下,可键入命令: C>DEBUG[d:][path][文件名][ 参数1][参数2] 其中文件名是被调试文件的名称,它须是执行文件(EXE,两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需 的DEBUG命令。 在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。 2、DEBUG的主要命令 (1汇编命令A,格式为: -A[地址] 该命令从指定地址开始允许输入汇编语句,把它们汇编成机 器代码相继存放在从指定地址开始的存储器中。 (2反汇编命令U,有两种格式: 1-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上 一个U命令的最后一条指令的下一个单元开始显示32个字节。

实验指导书参考2

汇编语言程序设计实验指导书

汇编语言程序设计实验指导书 《汇编语言程序设计》实验是学习本课程的每个考生必须要通过的一个重要的实践环节,根据“汇编语言程序设计自学考试大纲”规定:上机实验单独作为本课程的实验考核成绩。《汇编语言程序设计》是一门实践性很强的课程,只有多上机操作,对汇编语言源程序进行编辑、汇编、连接、调试和运行全过程的训练,才能加深对本课程基本知识的理解,才能熟练地掌握程序设计的方法与技巧,才能学好本课程。 本实验指导书是完全按照《汇编语言程序设计自学考试大纲》中“实验大纲”的要求编写的,为便于考生较好完成上机操作和实验报告,特此作出如下说明和要求: (1)做好上机实验的准备工作:应考者对每个实验需要进行预习,了解相关内容和具体要求,熟悉上机操作步骤,学会相关系统软件的使用,掌握各种操作调试命令。 (2)编写源程序:按照实验题目的要求,应考者要事先独立完成汇编语言源程序的编写工作,并对源程序进行认真的静态检查,减少错误的发生。 (3)完成实验报告:做完上机实验,应考者要严格按照实验报告的格式要求写出实验报告。实验报告的内容为:实验名称、实验的目的、实验的内容和要求、实验步骤、实验结果并附上源程序清单和程序流程图。

实验一DEBUG的使用 (一)实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 (二)实验设备 硬件环境:IBM-PC及其兼容机 软件环境:操作系统DOS3.0版本以上 调试程序https://www.wendangku.net/doc/472566238.html, (三)实验内容和要求 实验内容: 1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H 单元中。 实验要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 (四)预习要求 1、复习DOS启动方式和DOS有关命令的使用; 2、阅读本书后的附录,熟悉掌握DEBUG调试程序中的A、D、E、G、Q、R、T、U命令的书写格式及功能; 3、复习寻址方式和相关的数据传送指令及算术运算指令。 (五)实验步骤 1、启动DOS操作系统 2、运行https://www.wendangku.net/doc/472566238.html,程序(若当前盘为C) C:>DEBUG↙ – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG 命令) 3、用“A”命令编辑和汇编源程序 –A↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙

汇编程序调试实验报告

微机原理与接口技术 作 业 班级: 目录 一、........................................................... 实验目的:2 二、............................................................. 实验环境2 三、............................................................. 实验过程3 (一)................................................. 基础知识储备3

(二)............................................. 汇编语言程序设计3

(三)汇编程序调试 (3) 四、............................................................. 调试实例4 (一)....................................................... 实例一4 (二)....................................................... 实例二6 (三)....................................................... 实例三9 (四)....................................................... 实例四12五、............................................................. 实验总结15 (一)..................................................... 实验收获15 (二)..................................................... 实验感悟16 一、实验目的: 汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目标 代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O接口驱动等程序设计。通过本次实验,熟练掌握汇编程序的调试,深入了解MAS汇编语言及其程序设计方法。 、实验环境 EDIT编辑器、MASME编程序、LINK连接程序、TD调试程序

汇编语言实验报告

汇编语言实验报告 专业: 班级: 姓名: 学号: 2011年12月14日

目录 实验1 利用DEBUG调试汇编语言程序段 (3) 实验2 初级程序的编写与调试实验(一) (11) 实验3 初级程序的编写与调试实验(二) (20) 实验4 汇编语言程序上机过程 (28) 实验5 分支程序实验 (33) 实验6 循环程序实验 (40) 实验7 子程序实验 (45)

实验1 利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序 3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100 ;显示DS段, 0100开始的128个节内容

说明: 指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ① D SEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容. ② D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容 -D 200 ;显示DS段, 0200H开始的128个字节内容

汇编语言程序设计实验报告三(子程序设计实验)

汇编语言程序设计实验报告三(子程序设计实验) 一、实验目的 1、掌握主程序与子程序之间的调用关系及其调用方法。 2、掌握子程序调用过程中近程调用与远程调用的区别。 3、熟练掌握码型变换的程序。 二、实验内容 1、从键盘输入二位非压缩BCD数,存入AX寄存器中,编程实现将其转换为二进制 数,并在屏幕上显示。要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。数据可循环输入,遇‘00’结束。 三、实验准备 1、预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。 2、熟悉键盘输入和字符显示的程序段的编制。 四、实验步骤 1、编辑、汇编源程序,生成可执行文件。 2、执行程序,检查输入、输出结果,看是否正确。如不正确,用DEBUG检查,修改 源程序,再汇编、运行,直到程序正确为止。 3、用DEBUG的T命令或P命令跟踪程序的执行,观察在远程和近程调用过程中,堆 栈的变化情况。 五、实验报告要求 1、分析近程调用和远程调用的主要区别。用DEBUG命令观察执行过程有何不同。 2、分析实验结果及所遇到的问题的解决方法。 主程序流程图 转换子程序TRAN流程图

七、程序清单 STA SEGMENT STACK ’STACK’ DB 100 DUP(0) STA ENDS GSAG SEGMENT PARA ‘CODE’ ASSUME CS:CSAG MAIN PROC FAR STRA T: PUSH DS SUB AX,AX PUSH AX REV: MOV AH,1 INT 21H MOV BL,AL INT 21H MOV AH,AL MOV AL,BL CMP AX,3030H JE ENDTRAN CALL NEAR PTR TRAN CALL FAR PTR CON MOV AL,0DH CALL FAR PTR DISP MOV AL,0AH CALL FAR PTR DISP MOV AL,0AH CALL FAR PTR DISP JMP REV ENDTRAN: RET MAIN ENDP TRAN PROC NEAR AND AX,0F0FH MOV BL,AL MOV BL,AL MOV CL,3 SHL AL,CL MOV CL,1 SHL BL,CL ADD AL,BL ADD AL,AH RET TRAN ENDP CSAG ENDS CSBG SEGMENT PARA’CODE’ ASSUME CS:CSBG

汇编语言上机试验指导

作实验2 【1】.有空加作实验【4】(1). 实验2 算术及位串处理程序 【1】.在数据段预先存放16个十六进制数的ASCII码,把BX中的四位十六进制数,从左到右用查表的方法找到对应数位的ASCII码,并取出显示出来。 要求见书: 参考程序: data segment asc db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h db 41h,42h,43h,44h,45h,46h data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cl,4 rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h mov ah,4ch int 21h code ends end start 【2】用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。 要求:(1) 字符串的比较程序中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区。并指出不相等的位置。 参考书上例3.51,题目改为MESS2 定义为从键盘输入缓冲区,键盘输入缓冲区定义: mess2 DB 9,?,9 DUP(?) 例3.51 在数据段中有一个长度为19的字符串MESS1,在附加段中有一个长度为19的字符串MESS2,比较它们是否相等。若相等显示‘Y’,否则显示‘N’。编制程序如下所示。

汇编语言程序设计实验指导

实验一汇编语言上机过程 一、上机前的软件准备: MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等) 文本编辑器(如:https://www.wendangku.net/doc/472566238.html, , TURBO.EXE , TC.EXE , C.EXE 等) 汇编程序(如:MASM.EXE , ASM.EXE,TASM.EXE 等) 连接程序(如:LINK.EXE 等) 调试程序(如:DEBUG.EXE 等) 二、汇编程序建立过程: 通过 a.建立汇编源程序────→ b.编译为目标文件──┬─→d.连接为可执行文件 ↑↓ ↓ │ c.不通过,重新修改(语句错误)││ ├──────────────────────┘│ ↑ f.不正确,用调试工具调试,重新修改(逻辑错误)↓ └────────────────────────────←e运行 ↓正确 g.完成 三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明 PROCEDURE a:建立汇编源程序(即:建立文件名.asm) 这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。将源程序代码录入计算机的方法很多,下面将介绍具体方法。 1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。 2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。 PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件) 这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时你的程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,你可根据提示去逐一修改。现介绍具体过程: 在DOS提示符下键入MASM filename回车 (注:你系统内的汇编程序为MASM.EXE,如果你系统的汇编程序为ASM.EXE时,便将命令变为ASM fi lename回车。其中filename为你刚才在PROCEDURE a 中建立的文件名) 这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。MASM filename >filen (f ilen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。

【3】微机原理与汇编语言程序设计课程设计实验指导书_百.

《微机原理与汇编语言程序设计课程设计》 实验指导书 本课程设计包含软件部分和硬件部分两个环节。 软件部分完成在有限的课内实验环节无法涉及到的具有综合设计性的软件实验,如中断程序设计、I/O程序设计、宏设计等。硬件部分利用伟福试验系统设计一个电子钟电路,并编制一个程序使电子钟能正常运行。通过软硬件环节的设计和调试,巩固所学知识,增强动手能力,提高综合性工程素质。 总实验学时:共计2周 实验一:电话号码本设计完善 实验类型:综合性、设计性实验 学时:1天 适用对象:信息安全专业 实验二:显示器I/O程序设计 实验类型:综合性、设计性实验 学时:1天 适用对象:信息安全专业 实验三:中断程序设计 实验类型:综合性、设计性实验 学时:1天 适用对象:信息安全专业

实验四:发声系统设计 实验类型:综合性、设计性实验 学时:1天 适用对象:信息安全专业 实验五:键盘程序设计 实验类型:综合性、设计性实验 学时:1天 适用对象:信息安全专业 实验六:电子钟设计 实验类型:综合性、设计性实验 学时:5天 适用对象:信息安全专业 一、实验目的和要求 软件实验部分要求进一步熟悉汇编语言开发环境,掌握汇编语言程序设计的方法和步骤,并根据教师意见和讨论,完善改进课内环节所进行的实验及进行其他综合性、设计性较强的实验内容,具体如下: 1. 熟练掌握汇编语言程序设计环境,根据前期掌握程度,可选择Masm for windows集 成实验环境(实验室配备,或自行安装masm5.0、masm6.0、Emu8086,Tasm等,软件开发环境可由学生根据使用爱好自选。

2.根据课内实验验收时指导教师提出的意见,以及和同学讨论的结果,设计实现一个功能比较完善的电话号码本,并在设计中体现自己的工作特色,即具备和其他设计不同之处。 3. 显示器I/O程序设计,完成屏幕窗口控制程序。 要求在屏幕上开出三个窗口,它们的左上角和右下角的坐标分别是(5,10,(15,30和(5,50,(15,70和(18,15,(22,65,如从键盘输入字符,则显示在右窗口,同时也显示在下窗口的最下面一行。若需要将字符显示于左窗口,则先按下←键,接着再从键盘输入字符,字符就会从左窗口的最下行开始显示,同时下窗口也显示出左窗口的内容。如果再按下→键,输入字符就会接在先前输入的字符之后显示出来。当一行字符显示满后,窗口自动向上卷动一行,输入字符继续显示与最低一行,窗口最高一行向上卷动后消失。 4. 中断程序设计,完成内部中断服务程序和外部中断服务程序设计。具体要求为: (1.编写一个内部中断服务程序,使其能够显示以“0”结尾的字符串(利用显示器功能调用INT 10H。字符串缓冲区首地址为入口参数,利用DS:DX传递此参数。 (2.编写一个可屏蔽的外部中断服务程序,中断请求来自8259A的IRQ0,在新的外部中断服务程序(新08H中断中,使得每55ms的中断在屏幕上显示一串信息“A 8259A Interrupt!”,显示10次后,恢复原中断服务程序,返回DOS。 5.发声系统设计,参考教材中的例9.1,利用扬声器控制原理,编写一个简易乐器程序。 要求当按下1~8数字键时,分别发出连续的中音1~7和高音i(对应频率依次为524Hz、588Hz、660Hz、698Hz、784Hz、880Hz、988Hz和1048Hz;当按下其他键时,暂停发声。如果时间允许,可在此基础上自行发挥,如增加按键功能、编辑歌曲等。

微机原理实验实验指导书2015

微型计算机原理与应用 实验指导书 上海大学通信学院 2015 年 3 月

实验一8051单片机简单编程与调试 一、实验目的 通过简单小程序的输入和调试,熟悉并掌握Keil 的使用。学会Proteus与Keil的整合调试。 二、实验基本要求 建立三个项目,分别输入存储块清零、二进制BCD码及二进制ASCII码转换的汇编源程序,并进行仿真调试。画出实验程序的流程框图。 三、实验步骤 采用Keil Cx51 开发8051单片机应用程序一般需要经过下面几个步骤: 1、在 Vision2集成开发环境中创建一个新项目(Project),并为该项目选定合适的单片机CPU器件。 在菜单栏中选择“Project” →“New Project”,弹出“Create New Project”对话框,选择目标路径,在“文件名”栏中输入项目名后,单击“保存(S)”按钮,弹出“Selecte Device for Target”对话窗口。在此对话窗口的“Data base”栏中,单击“Atmel”前面的“+”号,或者直接双击“Atmel”,在其子类中选择“AT89C51”,确定CPU类型。如图所示。

点击“确定”按钮后,弹出如下的对话框 如果是进行汇编语言编程选择“否”。 2、利用μVision2的文件编辑器编写C语言(或汇编语言)源程序文件,并将文件添加到项目中去。一个项目可以包含多个文件,除源程序文件外还可以有库文件或文本说明文件。 在μVision2的菜单栏中选择“File”→“New”命令,新建文档,然后在菜单栏中选择“File” →“Save”命令,保存此文档,这时会弹出“Save As”对话窗口,在“文件名(N)”一栏中,为此文本命名,注意要填写扩展名“.asm”。单击“保存(S)”按钮,这样在编写汇编代码时,Keil会自动识别汇编语言的关键字,并以不同的颜色显示,以减少输入代码时出现的语法错误。程序编写完后,再次保存。 在Keil中“Project Workspace”子窗口中,单击“Target 1”前面的“+”号,展开此目录。在“Source Group 1”文件夹上单击鼠标右键,在右键菜单中选择“Add File to ‘Group Source 1’”,弹出“Add File to Group”对话窗口,在此对话窗口的“文件类型”栏中,选择“Asm Source File”,并找到刚才编写的.asm文件,双击此文件,将其添加到Source Group中,此时“Project Workspace”子窗口如图所示。

新版汇编语言程序设计实验指导书

汇编语言实验指导书 目录 实验一DEBUG的启动及其基本命令的使用(2 实验二内存操作数及寻址方法(6 实验三汇编语言程序的调试与运行(8 实验四查表程序设计(10 实验五系统功能调用(12 实验六循环程序设计(13 实验七分支程序设计(15 实验八子程序设计(18 实验九综合程序设计(20 附录实验报告(21 实验一DEBUG的启动及其基本命令的使用 一.实验目的: 掌握DEBUG的基本命令及其功能 二.实验内容: DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1、DEBUG程序的启动

在DOS提示符下,可键入命令: C>DEBUG[d:][path][文件名][ 参数1][参数2] 其中文件名是被调试文件的名称,它须是执行文件(EXE,两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“- ”,此时,可键入所需的DEBUG命令。 在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。 2、DEBUG的主要命令 (1汇编命令A,格式为: -A[地址] 该命令从指定地址开始允许输入汇编语句,把它们汇编成机 器代码相继存放在从指定地址开始的存储器中。 (2反汇编命令U,有两种格式: 1-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上 一个U命令的最后一条指令的下一个单元开始显示32个字节。 2-U范围 该命令对指定范围的内存单元进行反汇编,例如:

相关文档
相关文档 最新文档