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 条评论) |