首页 > 试题

汇编语言程序设计2

更新时间:2025-01-11 13:20:33 阅读: 评论:0

2024年2月9日发(作者:翻译u)

目 录

系统认识 ............................................................................................................ 1

实验一 数码转换编程及程序调试 ................................................................... 5

实验二 运算类编程实验 ................................................................................. 11

实验三 分支程序、循环程序设计实验 .......................................................... 16

实验四 子程序设计实验 ................................................................................. 22

实验五 显示程序实验 ................................................................................... 26

实验六 串行通讯应用实验 .............................................................................. 27

附录 WMD86 联机软件使用说明................................................................... 40

《汇编语言程序设计》

系统认识

一、实验目的

掌握TD-PITE微机原理与接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

二、实验设备

PC微机一台,TD-PITE实验装置一套。

三、实验内容

编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。

四、实验步骤

1. 运行Wmd86软件,进入Wmd86集成开发环境。

2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。

图1

3. 语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2所示。默认文件名为Wmd861。

图2

4. 编写实验程序,如图3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

- 1 --

《汇编语言程序设计》

图3

程序:

SSTACK SEGMENT STACK ;定义堆栈段

DW 32 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:SSTACK

START: PUSH DS

XOR AX, AX

MOV DS, AX

MOV SI, 3000H ;建立数据起始地址

MOV CX, 16 ;循环次数

AA1: MOV [SI], AL

INC SI ;地址自加1

INC AL ;数据自加1

LOOP AA1

AA2: JMP AA2

CODE ENDS

END START

5. 点击,编译文件,若程序编译无误,则输出如图4所示的输出信息,然后再点击行链接,链接无误输出如图5所示的输出信息。

进图4

- 2 --

《汇编语言程序设计》

图5

6. 连接PC与实验系统的通讯电缆,打开实验系统电源。

7. 编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。可以通过端口列表中的“端口测试”来检查通讯是否正常。点击 下载程序。 为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。起始运行语句下会有一条绿色的背景。如图6所示。

图6

8. 将输出区切换到调试窗口,使用D0000:3000命令查看内存3000H起始地址的数据,如图7所示。存储器在初始状态时,默认数据为CC。

图7

9. 点击按钮运行程序,然后再点击来停止程序运行,接下来观察程序运行结果,仍使用命令D0000:3000来观察数据变化。如图8所示。

- 3 --

《汇编语言程序设计》

图8

10. 也可以通过在语句AA2: JMP AA2处设置断点,断点显示如图9所示,然后运行程序,当遇到断点时程序会停下来,然后观察数据。可以使用E0000:3000来改变该地址单元的数据,如图10所示,输入11后,按“空格”键,可以接着输入第二个数,如22,结束输入按“回车”键。

图9

图10

操作练习:

编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。通过调试验证程序功能,使用E命令修改3500H单元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。

- 4 --

《汇编语言程序设计》

实验一 数码转换编程及程序调试

一、实验目的

掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。

熟悉程序调试的方法。

二、实验设备

Pc微机一台,TD-PITE实验装置一套。

三、实验内容及步骤

计算机输入设备输入的信息一般是由ASSII码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换是必不可少的。

计算机与外设间的数制转换关系如图所示2-1所示,数制对应关系如表2-1所示。

ASCII码

ASCII码

CRT显示

键盘

ASCII码

ASCII码

光电机

打印机

BCD码

BCD码

拨码开关

多段显示

二进制

二进制

数据开关

位显示

图2-1 数制转换关系

表1 数制对应关系表

十六进制BCD码 二进制机器ASCII码 七段码

数 码

0 0000 0000 30H 40H 3FH

1 0001 0001 31H 79H 06H

2 0010 0010 32H 24H 5BH

3 0011 0011 33H 30H 4FH

4 0100 0100 34H 19H 66H

5 0101 0101 35H 12H 6DH

6 0110 0110 36H 02H 7DH

7 0111 0111 37H 78H 07H

8 1000 1000 38H 00H 7FH

9 1001 1001 39H 18H 67H

A 1010 41H 08H 77H

B 1010 42H 03H 7CH

C 1011 43H 46H 39H

D 1100 44H 21H 5EH

E 1110 45H 06H 79H

F 1111 46H 0EH 71H

1. 将ASCII码表示的十进制数转换为二进制数

十进制表示为:

- 5 --

《汇编语言程序设计》

Di代表十进制数0,1,2,…,9;

上式转换为:

由此可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。

参考流程:

实验程序:

PUBLIC SADD

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

DATA SEGMENT

SADD DB 30H,30H,32H,35H,36H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV AX, OFFSET SADD

MOV SI, AX

MOV BX, 000AH

MOV CX, 0004H

MOV AH, 00H

;十进制数:00256

- 6 --

《汇编语言程序设计》

A1:

A2:

CODE

MOV AL, [SI]

SUB AL, 30H

IMUL BX

MOV DX, [SI+01]

AND DX, 00FFH

ADC AX, DX

SUB AL, 30H

INC SI

LOOP A1

JMP A2

ENDS

END START

实验步骤:

(1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;

(2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H;

(3)运行程序,然后停止程序;

(4)查看AX寄存器,即为转换结果,应为:0100 ;

(5)反复试几组数据,验证程序的正确性。

2. 将十进制数的ASCII码转换为BCD码

从键盘输入五位十进制数的ASCII码,存放于3500H起始的内存单元中,将其转换为BCD码后,再按位分别存入350AH起始的内存单元内。若输入的不是十进制的ASCII码,则对应存放结果的单元内容为“FF”。由表1可知,一字节ASCII码取其低四位即变为BCD码。

实验程序:

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV CX, 0005H ;转换位数

MOV DI, 3500H ;ASCII码首地址

A1: MOV BL, 0FFH ;将错误标志存入BL

MOV AL, [DI]

CMP AL, 3AH

JNB A2 ;不低于3AH则转A2

SUB AL, 30H

JB A2 ;低于30H则转A2

MOV BL, AL

A2: MOV AL, BL ;结果或错误标志送入AL

MOV [DI+0AH],AL ;结果存入目标地址

INC DI

LOOP A1

A3: JMP A3

CODE ENDS

END START

- 7 --

《汇编语言程序设计》

实验步骤:

(1)自己绘制程序流程图,然后编写程序,编译、链接无误后装入系统;

(2)在3500H~3504H单元中存放五位十进制数的ASCII码,即:键入E3500后,输入31,32,33,34,35;

(3)运行程序,然后停止程序运行;

(4)键入D350A,显示运行结果,应为:

0000:350A 01 02 03 04 05 CC …

(5)反复测试几组数据,验证程序功能。

3. 将十六位二进制数转换为ASCII码表示的十进制数

十六位二进制数的值域为0~65535,最大可转换为五位十进制数。

五位十进制数可表示为:

Di:表示十进制数0~9

将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。自行绘制程序流程图,编写程序可参考例程。例程中源数存放于3500H、3501H中,转换结果存放于3510H~3514H单元中。

实验程序:

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV SI,3500H ;源数据地址

MOV DX,[SI]

MOV SI,3515H ;目标数据地址

A1: DEC SI

MOV AX,DX

MOV DX,0000H

MOV CX,000AH ;除数10

DIV CX ;得商送AX, 得余数送DX

XCHG AX,DX

ADD AL,30H ;得Di得ASCII码

MOV [SI],AL ;存入目标地址

CMP DX,0000H

JNE A1 ;判断转换结束否,未结束则转A1

A2: CMP SI,3510H ;与目标地址得首地址比较

JZ A3 ;等于首地址则转A3,否则将剩余地址

DEC SI ;中填30H

MOV AL,30H

MOV [SI],AL

JMP A2

A3: JMP A3

CODE ENDS

END START

- 8 --

《汇编语言程序设计》

实验步骤

(1)编写程序,经编译、链接无误后,装入系统;

(2)在3500H、3501H中存入0C 00;

(3)运行程序,然后停止运行;

(4)检查运行结果,键入D3510,结果应为:30 30 30 31 32;

(5)可反复测试几组数据,验证程序的正确性。

4. 十六进制数转换为ASCII码

由表1中十六进制数与ASCII码的对应关系可知:将十六进制数0H~09H加上30H后得到相应的ASCII码,AH~FH加上37H可得到相应的ASCII码。将四位十六进制数存放于起始地址为3500H的内存单元中,把它们转换为ASCII码后存入起始地址为350AH的内存单元中。自行绘制流程图。

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV CX,0004H

MOV DI,3500H ;十六进制数源地址

MOV DX,[DI]

A1: MOV AX,DX

AND AX,000FH ;取低4位

CMP AL,0AH

JB A2 ;小于0AH则转A2

ADD AL,07H ;在A~FH之间,需多加上7H

A2: ADD AL,30H ;转换为相应ASCII码

MOV [DI+0DH],AL ;结果存入目标地址

DEC DI

PUSH CX

MOV CL,04H

SHR DX,CL ;将十六进制数右移4位

POP CX

LOOP A1

A3: JMP A3

CODE ENDS

END START

实验步骤

(1)编写程序,经编译、链接无误后装入系统;

(2)在3500H、3501H中存入四位十六进制数203B,即键入E3500,然后输入3B 20;

(3)先运行程序,然后再停止运行;

(4)键入D350A,显示结果为:0000:350A 32 30 33 42 CC …;

(5)反复输入几组数据,验证程序功能。

5. BCD码转换为二进制数

- 9 --

《汇编语言程序设计》

将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起始的内存单元中,自行绘制流程图并编写程序。

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: XOR AX, AX

MOV CX, 0004H

MOV SI, 3500H

MOV DI, 3510H

A1: MOV AL, [SI]

ADD AL, AL

MOV BL, AL

ADD AL, AL

ADD AL, AL

ADD AL, BL

INC SI

ADD AL, [SI]

MOV [DI], AL

INC SI

INC DI

LOOP A1

A2: JMP A2

CODE ENDS

END START

实验步骤

(1)编写程序,经编译、链接无误后装入系统;

(2)将四个二位十进制数的BCD码存入3500H~3507H中,即:先键入E3500,然后输入01 02 03 04 05 06 07 08;

(3)先运行程序,然后停止运行;

(4)键入D3510显示转换结果,应为:0C 22 38 4E;

(5)反复输入几组数据,验证程序功能。

- 10 --

《汇编语言程序设计》

实验二 运算类编程实验

一、实验目的

掌握使用运算类指令编程及调试方法。

掌握运算类指令对各状态标志位的影响及其测试方法。

学习使用软件监视变量的方法。

二、实验设备

Pc微机一台,TD-PITE实验装置一套。

三、实验内容及步骤

80X86指令系统提供了实现加、减、乘、除运算的基本指令,可对表1所示的数据类型进行算术运算。

表1 数据类型算术运算表

1. 二进制双精度加法运算

计算X+Y=Z,将结果Z存入某存储单元。

本实验是双精度(2个16位,即32位)加法运算,编程时可利用累加器AX,先求低16位的和,并将运算结果存入低地址存储单元,然后求高16位的和,将结果存入高地址存储单元中。由于低16运算后可能向高位产生进位,因此高16位运算时使用ADC指令,这样在低16位相加运算有进位时,高位相加会加上CF中的1。

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

PUBLIC XH, XL, YH, YL

PUBLIC ZH, ZL

DATA SEGMENT

XL DW ? ;X低位

XH DW ? ;X高位

YL DW ? ;Y低位

YH DW ? ;Y高位

ZL DW ? ;Z低位

ZH DW ? ;Z高位

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV AX, XL

ADD AX, YL ;X低位加Y低位

- 11 --

《汇编语言程序设计》

CODE

MOV ZL, AX

MOV AX, XH

ADC AX, YH

MOV ZH, AX

JMP START

ENDS

END START

;低位和存到Z的低位

;高位带进位加

;存高位结果

实验步骤

(1)编写程序,经编译、链接无误后装入系统;

(2)程序装载完成后,点击„变量区‟标签将观察窗切换到变量监视窗口;

(3)点击,将变量XH,XL,YH,YL,ZH,ZL添加到变量监视窗中,然后修改XH,XL,YH,YL的值,如图1所示,修改XH为0015,XL为65A0,YH为0021,YL为B79E;

图2-1

(4)在JMP START语句行设置断点,然后运行程序;

(5)当程序遇到断点后停止运行,查看变量监视窗口,计算结果ZH为0037,ZL为1D3E;

(6)修改XH,XL,YH和YL的值,再次运行程序,观察实验结果,反复测试几组数据,验证程序的功能。

2. 十进制的BCD码减法运算

计算X-Y=Z,其中X、Y、Z为BCD码。

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

PUBLIC X, Y, Z

DATA SEGMENT

X DW ?

Y DW ?

Z DW ?

DATA ENDS

CODE SEGMENT

- 12 --

《汇编语言程序设计》

ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV AH, 00H

SAHF

MOV CX, 0002H

MOV SI, OFFSET X

MOV DI, OFFSET Z

A1: MOV AL, [SI]

SBB AL, [SI+02H]

DAS

PUSHF

AND AL, 0FH

POPF

MOV [DI], AL

INC DI

INC SI

LOOP A1

JMP START

CODE ENDS

END START

实验步骤

(1)输入程序,编译、链接无误后装入系统;

(2)点击将变量X,Y,Z添加到变量监视窗中,并为X,Y赋值,假定存入40与12的BCD码,即X为0400,Y为0102;

(3)在JMP START语句行设置断点,然后运行程序;

(4)程序遇到断点后停止运行,观察变量监视窗,Z应为0208;

(5)重新修改X与Y的值,运行程序,观察结果,反复测试几次,验证程序正确性。

3. 乘法运算

实现十进制数的乘法运算,被乘数与乘数均以BCD码的形式存放在内存中,乘数为1位,被乘数为5位,结果为6位。

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

DATA SEGMENT

DATA1 DB 5 DUP(?) ;被乘数

DATA2 DB ? ;乘数

RESULT DB 6 DUP(?) ;计算结果

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

- 13 --

《汇编语言程序设计》

MOV DS,AX

CALL INIT ;初始化目标地址单元为0

MOV SI,OFFSET DATA2

MOV BL,[SI]

AND BL,0FH ;得到乘数

CMP BL,09H

JNC ERROR

MOV SI,OFFSET DATA1

MOV DI,OFFSET RESULT

MOV CX,0005H

A1: MOV AL,[SI+04H]

AND AL,0FH

CMP AL,09H

JNC ERROR

DEC SI

MUL BL

AAM ;乘法调整指令

ADD AL,[DI+05H]

AAA

MOV [DI+05H],AL

DEC DI

MOV [DI+05H],AH

LOOP A1

A2: JMP A2

INIT: MOV SI,OFFSET RESULT

MOV CX,0003H

MOV AX,0000H

A3: MOV [SI],AX

INC SI

INC SI

LOOP A3

RET

ERROR: MOV SI,OFFSET RESULT ;若输入数据不符合要求

MOV CX,0003H ;则RESULT所指向内存单

MOV AX,0EEEEH ;元全部写入E

A4: MOV [SI],AX

INC SI

INC SI

LOOP A4

JMP A2

CODE ENDS

END START

实验步骤

(1)编写程序,编译、链接无误后装入系统;

(2)查看寄存器窗口获得CS的值,使用U命令可得到数据段段地址DS,然后通过E命令为被乘数及乘数赋值,如被乘数:01 02 03 04 05,乘数:01,方法同实验内容1;

(3)运行程序,然后再停止运行;

(4)通过D命令查看计算结果,应为:00 01 02 03 04 05;当在为被乘数和乘数赋值时,如果一个数的低4位大于9,则查看计算结果将全部显示为E;

- 14 --

《汇编语言程序设计》

(5)反复测试几组数据,验证程序的正确性。

- 15 --

《汇编语言程序设计》

实验三 分支程序、循环程序设计实验

一、实验目的

1.掌握分支程序的结构。

2.掌握分支程序的设计、调试方法。

3.加深对循环结构的理解。

4.掌握循环结构程序设计的方法以及调试方法。

二、实验设备

PC机一台,TD-PITE实验装置一套。

三、实验内容:

设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图1所示。

图3-1 源数据块与目的数据块在存储中的位置情况

对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:

当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图3-1(b)所示。

当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图3-1(c)所示。

参考流程:如图3-2所示。

- 16 --

《汇编语言程序设计》

图3-2 程序流程图

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV CX, 0010H

MOV SI, 3100H

MOV DI, 3200H

CMP SI, DI

JA A2

ADD SI, CX

ADD DI, CX

DEC SI

DEC DI

A1: MOV AL, [SI]

MOV [DI], AL

DEC SI

DEC DI

- 17 --

《汇编语言程序设计》

A2:

A3:

CODE

DEC CX

JNE A1

JMP A3

MOV AL, [SI]

MOV [DI], AL

INC SI

INC DI

DEC CX

JNE A2

JMP A3

ENDS

END START

实验步骤

1. 按流程图编写实验程序,经编译、链接无误后装入系统;

2. 用E命令在以SI为起始地址的单元中填入16个数;

3. 运行程序,然后再停止运行;

4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同;

5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。

2. 计算S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止。

编写实验程序,计算上式的结果,参考流程图如图3-3所示。

图3-3 程序流程图

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

- 18 --

《汇编语言程序设计》

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV DX,0001H

MOV BL,02H

A1: MOV AL,BL

INC BL

MUL BL

ADD DX,AX

CMP AX,00C8H

JNA A1

A2: JMP A2

CODE ENDS

END START

;结果存于DX中

;判断N(N+1)与200的大小

实验步骤

(1)编写实验程序,编译、链接无误后装入系统;

(2)运行程序,然后再停止程序运行;

(3)运算结果存储在寄存器DX中,查看结果是否正确;

(4)可以改变N(N+1)的条件来验证程序功能是否正确,但要注意,结果若大于FFFFH将产生数据溢出。

2. 求某数据区内负数的个数

设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。

实验程序流程图如图3-4所示。

- 19 --

《汇编语言程序设计》

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV DI, 3000H

MOV CL, [DI]

XOR CH, CH

MOV BL, CH

INC DI

A1: MOV AL, [DI]

TEST AL, 80H

JE A2

INC BL

A2: INC DI

LOOP A1

MOV [DI], BL

A3: JMP A3

图3-4 程序流程图

;数据区首地址

;取数据个数

;指向第一个数据

;检查数据首位是否为1 TEST AL,00H;

;负数个数加1 JB A2 JE A3 JA A4

;保存结果

- 20 --

《汇编语言程序设计》

CODE

ENDS

END START

实验步骤

(1)按实验流程编写实验程序;

(2)编译、链接无误后装入系统;

(3)键入E3000,输入数据如下:

3000=06 (数据个数)

3001=12

3002=88

3003=82

3004=90

3005=22

3006=33

(4)先运行程序,然后停止程序运行;

(5)查看3007内存单元或寄存器BL中的内容,结果应为03;

(6)可以进行反复测试来验证程序的正确性。

- 21 --

《汇编语言程序设计》

实验四 子程序设计实验

一、实验目的

1.学习子程序的定义和调试方法。

2.掌握子程序、子程序的嵌套、递归子程序的结构;

3.掌握子程序的程序设计及调试方法。

二、实验设备

PC 机一台,TD-PITE 实验装置一套。

三、实验内容及步骤

1.求无符号字节序列中的最大值和最小值

设有一字节序列,其存储首地址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。程序流程图如图4-1所示。

图4-1 程序流程图

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

- 22 --

《汇编语言程序设计》

START:

ASSUME CS:CODE

MOV AX, 0000H

MOV DS, AX

MOV SI, 3000H

MOV CX, 0008H

CALL MYSUB1

INT 20H

MYSUB1 PROC

JCXZ A4

PUSH SI

PUSH CX

PUSH DX

MOV DH, [SI]

MOV DL, DH

CLD

A1: LODSB

CMP AL, DH

JBE A2

MOV DH, AL

JMP A3

A2: CMP AL, DL

JAE A3

MOV DL, AL

A3: LOOP A1

MOV AX,DX

POP DX

POP CX

POP SI

A4: RET

MYSUB1 ENDP

CODE ENDS

END START

; 数据区首址

; 调用子程序

实验步骤:

(1)根据程序流程图编写实验程序;

(2)经编译、链接无误后装入系统;

(3)键入E3000命令,输入8个字节的数据,如:D9 07 8B C5 EB 04 9D F9;

(4)运行实验程序;

(5)点击停止按钮,停止程序运行,观察寄存器窗口中AX的值,AX应为F9 04,其中AH中为最大值,AL中为最小值;

(6)反复测试几组数据,检验程序的正确性。

程序说明:该程序使用BH和BL暂存现行的最大值和最小值,开始时初始化成首字节的内容,然后进入循环操作,从字节序列中逐个取出一个字节的内容与BH和BL相比较,若取出的字节内容比BH的内容大或比BL的内容小,则修改之。当循环操作结束时,将BH送AH,将BL送AL,作为返回值,同时恢复BX原先的内容。

2. 求N!

利用子程序的嵌套和子程序的递归调用,实现N!的运算。根据阶乘运算法则,可以得:

- 23 --

《汇编语言程序设计》

N!=N(N-1)!=N(N-1)(N-2)!=……

0!=1

由此可知,欲求N的阶乘,可以用一递归子程序来实现,每次递归调用时应将调用参数减1,即求(N-1)的阶乘,并且当调用参数为0时应停止递归调用,且有0!=1,最后将每次调用的参数相乘得到最后结果。因每次递归调用时参数都送入堆栈,当N为0而程序开始返回时,应按嵌套的方式逐层取出相应的调用参数。

定义两个变量N及RESULT,RESULT中存放N!的计算结果,N在00H~08H之间取值。

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

PUBLIC N, RESULT ;设置全局变量

DATA SEGMENT

N DB ? ;N的范围在1~8之间

RESULT DW ? ;N!的结果存于该变量中

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV AX, OFFSET RESULT

PUSH AX

MOV AX,N

MOV DI, 0000H

CALL MYSUB2

INT 20H ;在此处设置断点,观察变量

MYSUB2 : PROC

PUSH BP

MOV BP,SP

PUSH BX

PUSH AX

MOV BX,[BP+DI+06H]

MOV AX,[BP+DI+04H]

CMP AX,0000H

JZ A1

PUSH BX

DEC AX

PUSH AX

CALL branch ;递归调用

MOV BX,[BP+DI+06H]

MOV AX,[BX]

PUSH BX

MOV BX,[BP+DI+04H]

MUL BX

POP BX

JMP A2

- 24 --

《汇编语言程序设计》

A1:

A2:

CODE

MOV AX, 0001H

MOV RESULT, AX

POP AX

POP BX

POP BP

RET 0004H

ENDS

END START

实验步骤

(1)依据设计思想绘制程序流程图,编写实验程序;

(2)经编译、链接无误后装入系统;

(3)将变量N及RESULT加入变量监视窗口,并修改N值,N在00~08H之间取值;

(4)在JMP START语句行设置断点,然后运行程序;

(5)当程序遇到断点后停止运行,此时观察变量窗口中RESULT的值是否正确,验证程序的正确性;

(6)改变变量N的值,然后再次运行程序,当程序停止在断点行后观察实验结果。

表4-2 阶乘表

- 25 --

《汇编语言程序设计》

实验五 显示程序实验

一、实验目的

1.了解INT 10H各功能模块的作用及用法;

2.掌握字符方式下PC机显示器显示控制。

二、实验设备

PC机一台,TD-PITE实验装置一套.

三、实验内容:

编写实验程序,在显示器上的输出窗口显示A~Z共26个大写英文字母。

显示I/O功能调用使用说明如下:

INT 10使用说明

入口:AH=00H,AL=01H

功能:清屏

入口:AH=01H,AL=数据

功能:写AL中的数据到显示屏上

入口:AH=06H,DS:BX=字串首地址,且字符串尾用00H填充

功能:显示一字串,直到遇到00H为止

实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV CX,001AH

MOV BL,41H

MOV AH,01H

A1: MOV AL,BL

INT 10H

INC BL

PUSH CX

MOV CX,0FFFFH

A2: LOOP A2

POP CX

DEC CX

JNZ A1

A3: JMP A3

CODE ENDS

END START

;功能调用

实验步骤:

1. 编写实验程序,经编译、链接无误后装入系统;

2. 运行实验程序,观察实验结果;

3. 修改实验程序,在显示器上显示„GOOD AFTERNOON‟,要求使用AH=06功能(显示一字符串功能块)完成。

- 26 --

《汇编语言程序设计》

实验六 串行通讯应用实验

一、实验目的

1. 掌握 8251 的工作方式及应用;

2. 了解有关串口通讯的知识。

二、实验设备

PC 机两台,TD-PITE 实验装置两套。

三、实验内容

1. 自收自发实验,将 3000H 起始的 10 个单元中的初始数据发送到串口,然后自接收并保

存到 4000H 起始的内存单元中。

2. 双机通讯实验,本实验需要两台实验装置,其中一台作为接收机,一台作为发送机,发

送机将 3000H~3009H 内存单元中共 10 个数发送到接收机,接收机将接收到的数据直接在屏幕

上输出显示。

四、实验原理

1.8251的基本性能

8251是可编程的串行通信接口,可以管理信号变化范围很大的串行数据通信。有下列基本性能:

(1)通过编程,可以工作在同步方式,也可以工作在异步方式;

(2)同步方式下,波特率为0~64K,异步方式下,波特率为0~19.2K;

(3)在同步方式时,可以用5~8位来代表字符,内部或外部同步,可自动插入同步字符;

(4)在异步方式时,也使用5~8位来代表字符,自动为每个数据增加1个启动位,并能够根据编程为每个数据增加1个、1.5个或2个停止位;

(5)具有奇偶、溢出和帧错误检测能力;

(6)全双工,双缓冲器发送和接收器。

注意:8251尽管通过了RS-232规定的基本控制信号,但并没有提供规定的全部信号。

2.8251的内部结构及外部引脚

8251的内部结构图如图1所示,可以看出,8251有7个主要部分,即数据总线缓冲器、读/写控制逻辑电路、调制/解调控制电路、发送缓冲器、发送控制电路、接收缓冲器和接收控制电路,图中还标识出了每个部分对外的引脚。

- 27 --

图6-1 8251内部结构图

8251的外部引脚如图2所示,共28个引脚,每个引脚信号的输入输出方式如图中的箭头方向所示。

图6-2 8251外部引脚图

3. 8251在异步方式下的TXD信号上的数据传输格式

图3示意了8251工作在异步方式下的TXD信号上的数据传输格式。数据位与停止位的位数可以由编程指定。

图3 8251工作在异地方式下TXD信号的数据传输格式

4. 8251的编程

对8251的编程就是对8251的寄存器的操作,下面分别给出8251的几个寄存器的格式。

(1)方式控制字

方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图4所示。

《汇编语言程序设计》

图4 8251方式控制字

(2)命令控制字

命令控制字用于指定8251进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。图5所示的是8251命令控制字各位的定义。

图5 8251命令控制字格式

(3)状态字

CPU通过状态字来了解8251当前的工作状态,以决定下一步的操作,8251的状态字如图6所示。

图6 8251状态字格式

(4)系统初始化

- 29 -

《汇编语言程序设计》

8251的初始化和操作流程如图7所示。

图7 8251初始化流程图

1. 数据信号的串行传输

该实验循环向串口发送一个数,使用示波器测量TXD引脚上的波形,以了解串行传输的数据格式。

实验程序

M8251_DATA EQU 0600H

M8251_CON EQU 0602H

M8254_2 EQU 06C4H

M8254_CON EQU 06C6H

SSTACK SEGMENT STACK

- 30 -

《汇编语言程序设计》

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: CALL INIT

A1: CALL SEND

MOV CX, 0001H

A2: MOV AX, 0F00H

A3: DEC AX

JNZ A3

LOOP A2

JMP A1

INIT: MOV AL, 0B6H ; 8254, 设置通讯时钟

MOV DX, M8254_CON

OUT DX, AL

MOV AL, 0CH

MOV DX, M8254_2

OUT DX, AL

MOV AL, 00H

OUT DX, AL

CALL RESET ; 对8251进行初始化

CALL DALLY

MOV AL, 7EH

MOV DX, M8251_CON ; 写8251方式字

OUT DX, AL

CALL DALLY

MOV AL, 34H

OUT DX, AL ; 写8251控制字

CALL DALLY

RET

RESET: MOV AL, 00H ; 初始化8251子程序

MOV DX, M8251_CON ; 控制寄存器

OUT DX, AL

CALL DALLY

OUT DX, AL

CALL DALLY

OUT DX, AL

CALL DALLY

MOV AL, 40H

OUT DX, AL

RET

DALLY: PUSH CX

MOV CX, 5000H

A4: PUSH AX

POP AX

LOOP A4

- 31 -

《汇编语言程序设计》

SEND:

CODE

POP CX

RET

PUSH AX

PUSH DX

MOV AL, 31H

MOV DX, M8251_CON

OUT DX, AL

MOV AL, 55H

MOV DX, M8251_DATA

OUT DX, AL

POP DX

POP AX

RET

ENDS

END START

; 发送数据55H

实验步骤:

(1)按图8连接实验接线;

图8 8251实验单元电路图

(2)编写实验程序,经编译、链接无误后装入系统;

(3)运行程序,使用示波器观察TXD引脚上的波形。

2. 自收自发实验

- 32 -

《汇编语言程序设计》

将3000H起始的10个单元中的初始数据发送到串口,然后自接收并保存到4000H起始的内存单元中。通过自收自发实验,可以验证硬件及软机设计,常用于自测试。

实验程序

M8251_DATA EQU 0600H

M8251_CON EQU 0602H

M8254_2 EQU 06C4H

M8254_CON EQU 06C6H

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV AX, 0000H

MOV DS, AX

MOV AL, 0B6H

MOV DX, M8254_CON

OUT DX, AL

MOV AL, 0CH

MOV DX, M8254_2

OUT DX, AL

MOV AL, 00H

OUT DX, AL

CALL INIT

CALL DALLY

MOV AL,7EH

MOV DX, M8251_CON

OUT DX, AL

CALL DALLY

MOV AL, 34H

OUT DX, AL

CALL DALLY

MOV DI, 3000H

MOV SI, 4000H

MOV CX, 000AH

A1: MOV AL, [SI]

PUSH AX

MOV AL, 37H

MOV DX, M8251_CON

OUT DX, AL

POP AX

MOV DX, M8251_DATA

OUT DX, AL

MOV DX, M8251_CON

A2: IN AL, DX

AND AL, 01H

JZ A2

;初始化8254,得到收发时钟

;复位8251

;8251方式字

;8251控制字

;10个数

;发送数据

;判断发送缓冲是否为空

- 33 -

《汇编语言程序设计》

CALL DALLY

A3: IN AL, DX

AND AL, 02H

JZ A3

MOV DX, M8251_DATA

IN AL, DX

MOV [DI], AL

INC DI

INC SI

LOOP A1

A4: JMP A4

INIT: MOV AL, 00H

MOV DX, M8251_CON

OUT DX, AL

CALL DALLY

OUT DX, AL

CALL DALLY

OUT DX, AL

CALL DALLY

;OUT 81H,AL

;CALL DALLY

;OUT 80H,AL

;CALL DALLY

MOV AL, 40H

OUT DX, AL

RET

DALLY: PUSH CX

MOV CX,3000H

A5: PUSH AX

POP AX

LOOP A5

POP CX

RET

CODE ENDS

END START

;判断是否接收到数据

;读取接收到的数据

;复位8251子程序

实验步骤:

(1)参考实验接线图如图9所示,按图连接实验线路;

- 34 -

《汇编语言程序设计》

图9 8251数据串行传输实验线路图

(2)编写实验程序,编译、链接无误后装入系统;

(3)使用E命令更改4000H起始的10个单元中的数据;

(4)运行实验程序,然后停止程序的运行;

(5)查看3000H起始的10个单元中的数据,与初始化的数据进行比较,验证程序功能。

3. 双机通讯实验

本实验需要两台实验装置,其中一台作为接收机,一台作为发送机,发送机将3000H~3009H内存单元中共10个数发送到接收机,接收机将接收到的数据直接在屏幕上输出显示。

实验程序

接收机

M8251_DATA EQU 0600H

M8251_CON EQU 0602H

M8254_2 EQU 06C4H

M8254_CON EQU 06C6H

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

- 35 -

《汇编语言程序设计》

START:

A1:

A2:

INIT:

MOV AL, 0B6H ;初始化8254

MOV DX, M8254_CON

OUT DX, AL

MOV AL, 0CH

MOV DX, M8254_2

OUT DX, AL

MOV AL, 00H

OUT DX, AL

;CLI

CALL INIT ;复位8251

CALL DALLY

MOV AL, 7EH

MOV DX, M8251_CON

OUT DX, AL

CALL DALLY

MOV AL, 34H

OUT DX, AL

CALL DALLY

MOV AX, 0152H ;输出显示字符 'R'

INT 10H

MOV DI, 3000H

MOV CX, 000AH

MOV DX, M8251_CON

IN AL, DX

AND AL, 02H

JZ A1

MOV DX, M8251_DATA

IN AL, DX

AND AL, 7FH

MOV [DI],AL

INC DI

LOOP A1

MOV AL, 00H

MOV SI, 300AH

MOV [SI], AL

MOV AH, 06H

MOV BX, 3000H

INT 10H ;输出显示接收到的数据

;STI

JMP A2

MOV AL, 00H ;复位8251子程序

MOV DX, M8251_CON

OUT DX, AL

CALL DALLY

OUT DX, AL

CALL DALLY

OUT DX, AL

CALL DALLY

MOV AL, 40H

OUT DX, AL

- 36 -

《汇编语言程序设计》

RET

DALLY: PUSH CX

MOV CX, 3000H

A3: PUSH AX

POP AX

LOOP A3

POP CX

RET

CODE ENDS

END START

发送机

M8251_DATA EQU 0600H

M8251_CON EQU 0602H

M8254_2 EQU 06C4H

M8254_CON EQU 06C6H

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV AL, 0B6H

MOV DX, M8254_CON

OUT DX, AL

MOV AL, 0CH

MOV DX, M8254_2

OUT DX, AL

MOV AL, 00H

OUT DX, AL

CALL INIT

CALL DALLY

MOV AL, 7EH

MOV DX, M8251_CON

OUT DX, AL

CALL DALLY

MOV AL, 34H

OUT DX, AL

CALL DALLY

MOV DI, 3000H

MOV CX, 000AH

A1: MOV AL, [DI]

CALL SEND

CALL DALLY

CALL DALLY

INC DI

LOOP A1

A2: JMP A2

;初始化8254, 得到收发时钟;复位8251

;8251方式字

;8251控制字

- 37 -

《汇编语言程序设计》

INIT: MOV AL, 00H

MOV DX, M8251_CON

OUT DX, AL

CALL DALLY

OUT DX, AL

CALL DALLY

OUT DX, AL

CALL DALLY

MOV AL, 40H

OUT DX, AL

RET

DALLY: PUSH CX

MOV CX, 3000H

A4: PUSH AX

POP AX

LOOP A4

POP CX

RET

SEND: PUSH DX

PUSH AX

MOV AL, 31H

MOV DX, M8251_CON

OUT DX, AL

POP AX

MOV DX, M8251_DATA

OUT DX, AL

MOV DX, M8251_CON

A3: IN AL, DX

AND AL, 01H

JZ A3

POP DX

RET

CODE ENDS

END START

实验步骤:

(1)按图10连接实验线路;

;复位8251子程序

;数据发送子程序

- 38 -

《汇编语言程序设计》

图10 自首自发实验接线图

(2)为两台机器分别编写实验程序,编译、链接后装入系统;

(3)为发送机初始化发送数据;

(4)首先运行接收机上的程序,等待接收数据,然后运行发送机上的程序,将数据发送到串口。

(5)观察接收机端屏幕上的显示是否与发送机端初始的数据相同,验证程序功能。

- 39 -

《汇编语言程序设计》

附录 Wmd86 联机软件使用说明

界 面 窗 口 介 绍

主界面窗口如下,主要分为三部分:程序编辑区、变量区和输出区,下面分别加以介绍。

程序编辑区:

位于界面右上部,用户可在程序编辑区用“新建”命令打开一个新文档或用“打开”命令打开一个已存在的文档,在文档中用户可编辑程序。用户可在程序编辑区打开多个文档,点击文档标签可激活任一文档。编译、链接、加载以及调试命令只针对当前活动文档。用户调试程序时,调试界面亦在文档中显示。

变量区:

位于界面左上部,包括三个部分:寄存器区、变量区和堆栈区。寄存器区和变量区用于实时监视寄存器和变量,也能够修改寄存器和变量的值,堆栈区主要用于实时监视堆栈寄存器。点击寄存器区标签可观察和修改寄存器,点击变量区标签可观察和修改变量,点击堆栈区标签可观察堆栈寄存器。执行相关操作后寄存器、变量和堆栈寄存器的值自动刷新,如果寄存器区刷新后的值和刷新前的值相同,则显示为蓝色,如果不同,则显示为红色。变量区和堆栈区刷新前和刷新后都为蓝色。想修改寄存器或变量,用鼠标左键单击某寄存器或变量,当寄存器或变量值的区域变为蓝色后输入修改后的值,然后回车。如果修改的是寄存器,输入的值的长度与寄存器的长度相同,回车后修改正确,如果输入的值的长度和寄存器的长度 - 40 -

《汇编语言程序设计》

不相同,寄存器的值没有被修改,保持原来的值且可以继续修改该寄存器的值。如果修改的是变量,输入的值的长度与变量的长度相同,回车后修改正确,如果输入的值的长度小于变量的长度,回车后输入值的前面自动添零,如果输入值的长度大于变量的长度,回车后输入值的后面的多余部分自动删除。堆栈区只用于监视,不能够被修改。

输出区:

位于界面下部,输出区包含三个部分:编译区、调试区和结果区。编译区显示编译和链接的结果,如果编译时有错误或警告,双击错误或警告信息,错误标识符会指示到相应的有错误或警告的行。调试区主要用于DEBUG调试。结果区主要用于显示程序加载结果、程序运行输出结果和复位结果。结果区中有“加载中,请稍候....”的字样表示联机软件正在把可执行文件加载到下位机中,用户此时应等待直到加载完成,“加载成功”表示加载完成且成功,“加载失败”表示加载完成且失败,此时应重新加载。程序中用“INT 10H”输出的结果亦显示在此区。软复位或硬件复位成功后,结果区显示“复位成功!”。如果复位不成功则不显示此句。

按 钮 功 能 介 绍

标准工具栏:

标准工具栏共有十二个按钮,其图如下:

新建按钮

用此按钮在Wmd86中建立一个新文档。

您可用打开命令打开一个现存文档。

打开按钮

用此命令在一个新的窗口中打开一个现存的文档。您可同时打开多个文档,点击某文档的标签可激活此文档。您可用窗口菜单在多个打开的文档中切换。见窗口1,2,...命令。

您可用新建命令建立新文档。

保存按钮

- 41 -

《汇编语言程序设计》

用此命令来关闭当前活动文档。Wmd86会建议您在关闭文档之前保存对您的文档所做的改动。如果您没有保存而关闭了一个文档,您将会失去自从您最后一次保存以来所做的所有改动。在关闭一无标题的文档之前,Wmd86会显示另存为对话框,建议您命名和保存文档。

剪切按钮

用此命令将当前被选取的数据从文档中删除并放置于剪贴板上。如当前没有数据被选取时,此命令则不可用。

把数据剪切到剪贴板上将取代原先存放在那里的内容。

复制按钮

用此命令将被选取的数据复制到剪切板上。如当前无数据被选取时,此命令则不可用。

把数据复制到剪贴板上将取代以前存在那里的内容。

粘贴按钮

用此命令将剪贴板上内容的一个副本插入到插入点处。如剪贴板是空的,此命令则不可用。

打印按钮

用此命令来打印一个文档。在此命令提供的打印对话框中,您可以指明要打印的页数范围、副本数、目标打印机,以及其它打印机设置选项。

撤消按钮

如果可能的话,可用此命令来撤消上一步编辑操作。如果无法撤消上一步操作,菜单上的撤消命令会变灰。

重复按钮

如果可能的话,可用此命令来恢复撤消的编辑操作。如果无法恢复编辑操作,菜单上的重复命令会变灰。

显隐变量区按钮

用此按钮可显示和隐藏变量和寄存器区。

显隐输出区按钮

用此按钮可显示和隐藏输出区。

变量监控按钮

加载成功后才可用此按钮。点击此按钮,出现如下对话框:

- 42 -

《汇编语言程序设计》

左边的列表框为程序中的全局变量,系统只能监视全局变量,右边的列表框为系统正在监视的全局变量。如果想监视左边列表框的某一变量A,用鼠标左键单击变量A,使之成为选择项,如上图所示,此时点击“加入监视”按钮,右边的列表框出现变量A,点击“结束”按钮后变量A会出现在变量区。如果想从变量区去掉某一正在监视的变量B,点击“变量监控”按钮,出现如上图所示对话框,在右边的列表框中用鼠标左键单击变量B,使之成为选择项,如上图所示,此时点击“停止监视”按钮,此变量从右边的列表框消失,点击“结束”按钮后,变量B从变量区消失。

在汇编语言源文件中,数据段定义的变量并不是全局变量,因此数据段定义的变量并不出现在上图所示的对话框的左边列表,要想监视这些变量,必须使它们成为全局变量,使一个变量成为全局变量的方法是用关键字PUBLIC在源程序的最前面声明之,格式是:PUBLIC

symbol[,...],范例如下:

数据段DATA1中的数据 mus_time,mus_freq 经过PUBLIC声明后成为全局变量,编译、链接、加载完成后,点击“变量监控”按钮,此时对话框左边的列表框出现 mus_time和mus_freq 变量,可对这两个变量进行监控。

- 43 -

《汇编语言程序设计》

在C语言源文件中,函数内部定义的变量不是全局变量,函数外面定义的变量才是全局变量,因此系统只能监视函数外面定义的变量。要想监视某一变量,应该把他定义在函数的外面。

堆栈监控

点击此按钮,出现如下对话框:

选择“不监控堆栈”单选按钮,确定后不监视堆栈寄存器,选择“监控堆栈”单选按钮,确定后监视堆栈寄存器。默认选项为“不监控堆栈”。

自 定 义 功 能

自定义功能之命令属性页:

该属性页主要三项:类别、命令、说明。

类别:列出了应用程序所有的菜单。

命令:列出了选中的菜单中所对应的菜单命令。如上图中选中的是"文件"菜单,则在"命令"栏中 - 44 -

《汇编语言程序设计》

列出了"文件"所对应的菜单命令。

说明:如果选中了一个菜单命令,则在说明栏中注明该菜单命令的作用。

右 键 菜 单

右键菜单之工具栏菜单:

工具栏菜单提供了以下命令:

标准工具栏 显示或隐藏标准工具栏

变量区 显示或隐藏变量区

输出区 显示或隐藏输出区

编译工具栏 显示或隐藏编译工具栏

调试工具栏 显示或隐藏调试工具栏

自定义

标准工具栏(T):

用此命令可显示和隐藏标准工具栏。标准工具栏包括了Wmd86中一些最普通命令的按钮,如文件打开。在工具栏被显示时,一个打勾记号出现在该菜单项目的旁边。

参见工具栏以得到对使用工具栏的帮助。

变量区(W):

用此命令可显示和隐藏变量区。

输出区(O):

用此命令可显示和隐藏输出区

编译工具栏(T):

用此命令可显示和隐藏编译工具栏。编译工具栏包括了Wmd86中全部编译命令的按钮,如编译、链接。在工具栏被显示时,一个打勾记号出现在该菜单项目的旁边。

参见工具栏以得到对使用工具栏的帮助。

调试工具栏(T):

- 45 -

《汇编语言程序设计》

用此命令可显示和隐藏调试工具栏。调试工具栏包括了Wmd86中全部调试命令的按钮,如单步、跳过。在工具栏被显示时,一个打勾记号出现在该菜单项目的旁边。

参见工具栏以得到对使用工具栏的帮助。

右 键 菜 单

右键菜单之编辑菜单:

编辑菜单提供了以下命令:

剪切 从文档中删除数据并将其移到剪贴板上。

复制 从文档中将数据复制到剪贴板上。

粘贴 从剪贴板上将数据粘贴到文档中。

剪切(T):

用此命令将当前被选取的数据从文档中删除并放置于剪贴板上。如当前没有数据被选取时,此命令则不可用。

把数据剪切到剪贴板上将取代原先存放在那里的内容。

复制(C):

用此命令将被选取的数据复制到剪切板上。如当前无数据被选取时,此命令则不可用。

把数据复制到剪贴板上将取代以前存在那里的内容。

粘贴(P):

用此命令将剪贴板上内容的一个副本插入到插入点处。如剪贴板是空的,此命令则不可用。

文 件 菜 单 项

文件菜单项:

- 46 -

《汇编语言程序设计》

文件菜单提供了以下命令:

新建 建立一个新文档

打开 打开一个现存文档

关闭 关闭一个打开的文档

保存 用同样的文件名保存一个打开的文档

另存为 用指定的文件名保存一个打开的文档

打印 打印一个文档

打印预览 在屏幕上按被打印出的格式显示文档

打印设置 选择一个打印机以及打印机连接

退出 退出Wmd86

新建(N):

用此命令在Wmd86中建立一个新文档。

您可用打开命令打开一个现存文档。

打开(O):

用此命令在窗口中打开一个现存的文档。您可同时打开多个文档,点击某文档的标签可激活此文档。您可用窗口菜单在多个打开的文档中切换。见窗口1,2,...命令。

您可用新建命令建立新文档。

关闭(C):

- 47 -

《汇编语言程序设计》

用此命令来关闭当前活动文档。Wmd86会建议您在关闭文档之前保存对您的文档所做的改动。如果您没有保存而关闭了一个文档,您将会失去自从您最后一次保存以来所做的所有改动。在关闭一无标题的文档之前,Wmd86会显示另存为对话框,建议您命名和保存文档。

保存(S):

用此命令将当前活动文档保存到它的当前的文件名和目录下。当您第一次保存文档时,Wmd86显示另存为对话框以便您命名您的文档。如果在保存之前,您想改变当前文档的文件名和目录,您可选用另存为命令。

另存为(A)„:

用此命令来保存并命名活动文档。Wmd86会显示另存为对话框以便您命名您的文档。

如要用当前文件名和目录保存文档,您可用保存命令。

打印(P)„:

用此命令来打印一个文档。在此命令提供的打印对话框中,您可以指明要打印的页数范围、副本数、目标打印机,以及其它打印机设置选项。

打印预览(V):

用此命令按要打印的格式显示活动文档。当您选择此命令时,主窗口就会被一个打印预览窗口所取代。这个窗口可以按它们被打印时的格式显示一页或两页。打印预览工具栏提供选项使您可选择一次查看一页或两页,在文档中前后移动,放大和缩小页面,以及开始一个打印作业。

打印设置(R)„:

用此命令来选择一台打印机和一个打印机连接。在此命令提供的打印设置对话框中,您可以指定打印机及其连接。

最近使用文件:

您可以通过此列表,直接打开最近打开过的文件,共四个。

退出(X):

用此命令来结束您Wmd86的运行阶段。您也可使用在应用程序控制菜单上的关闭命令。

Wmd86会提示您保存尚未保存的改动。

编 辑 菜 单 项

编辑菜单项:

- 48 -

本文发布于:2024-02-09 15:51:25,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/88/48345.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:汇编语言程序设计2.doc

本文 PDF 下载地址:汇编语言程序设计2.pdf

标签:程序   数据   实验   命令   变量   文档
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|