资源描述
实验一 标志寄存器应用
一、实验目与规定
1.掌握汇编程序编译过程;
2.掌握8086标志寄存器特点。
二、实验内容
练习辨认8086标志寄存器各种标志位。PC机中状态位表达如下:
标志位名称
为1相应符号
为0相应符号
OF 溢出标志
OV
NV
DF 方向标志
DN
UP
IF 中断容许标志
EI
DI
SF 符号标志
NG
PL
ZF 零标志
ZR
NZ
AF 半进位标志
AC
NA
PF 奇偶标志
PE
PO
CF 进位标志
CY
NC
DEBUG命令及其功能:
命令
功能
格式
A
对语句进行汇编
A[<地址>]
C
比较内存内容
C<源地址范畴><目的>
D
显示内存内容
D[<地址>]或[<地址范畴>]
E
修改内存内容
E<地址>[<字节串>…]
F
填充内存内容
F<地址范畴><要填入字节或串>
G
运营一种程序或程序段
G[=<始址>][<断点>…]
H
十六进制加减法运算
H<数值1><数值2>
I
读/显示输入字节
I<端口地址>
L
装入文献或磁盘扇区
L[<地址>[<盘号><相称扇区><扇区数>]]
M
传送内存块
M<源地址范畴><目的地址>
N
定义文献名和参量
N<文献名>[<文献名>…]
O
输出命令
O<端口地址><字节>
P
单步,并跳过子程序
P[=<地址>][<执行条数>]
Q
退出DEBUG
Q
R
显示和修改寄存器内容
R[<寄存器>]
S
对字符进行检索
S<地址范畴><要检索字节>
T
跟踪执行和显示
T[=<地址>][<跟踪条数>]
U
对指令进行反汇编
U[<地址范畴>]
W
写入文献或磁盘扇区
W[<地址>[<盘号><相称扇区><扇区数>]]
三、实验设备
微型计算机(80x86系列)。
四、实验参照程序
DATA SEGMENT
A DW 123
B DW 456
SUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
START: MOV AX ,DATA
MOV DS ,AX
MOV AX ,A
SUB AX ,B
MOV SUM ,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
五、实验环节
环节一、用鼠标单击开始菜单,单击运营。如下图所示:
环节二、在运营窗口中键入cmd,回车进入命令提示符。如下图所示:
环节三、在命令提示符中编辑程序文献。如下图所示:
1.C:\>D: 回车
2.D:\ >CD MASM611 回车
3.D:\MASM611>CD BIN 回车
4.D:\MASM611>BIN> EDIT 文献名.ASM
编辑程序之后,从FLIE菜单中选取SAVE,之后选取EXIT退出
环节四、在命令提示行中编译程序。如下图所示:
D:\MASM611>BIN>MASM 文献名.ASM 回车
环节五、在命令提示行中链接程序。如下图所示:
D:\MASM611>BIN>LINK 文献名.OBJ 回车
回车
回车
回车
直到浮现
环节六、在命令提示行中运营程序。如下图所示:
D:\MASM611>BIN>debug 文献名.exe 回车
依照DEBUG命令可以查看寄存器内容以及其他。
DEBUG命令及其功能:
命令
功能
格式
A
对语句进行汇编
A[<地址>]
C
比较内存内容
C<源地址范畴><目的>
D
显示内存内容
D[<地址>]或[<地址范畴>]
E
修改内存内容
E<地址>[<字节串>…]
F
填充内存内容
F<地址范畴><要填入字节或串>
G
运营一种程序或程序段
G[=<始址>][<断点>…]
H
十六进制加减法运算
H<数值1><数值2>
I
读/显示输入字节
I<端口地址>
L
装入文献或磁盘扇区
L[<地址>[<盘号><相称扇区><扇区数>]]
M
传送内存块
M<源地址范畴><目的地址>
N
定义文献名和参量
N<文献名>[<文献名>…]
O
输出命令
O<端口地址><字节>
P
单步,并跳过子程序
P[=<地址>][<执行条数>]
Q
退出DEBUG
Q
R
显示和修改寄存器内容
R[<寄存器>]
S
对字符进行检索
S<地址范畴><要检索字节>
T
跟踪执行和显示
T[=<地址>][<跟踪条数>]
U
对指令进行反汇编
U[<地址范畴>]
W
写入文献或磁盘扇区
W[<地址>[<盘号><相称扇区><扇区数>]]
六、实验结论
1.程序运营后变量SUM值是多少?
2.程序运营先后标志寄存器各标志位有何变化?
3.分析实验成果及所遇到问题,并阐明解决办法。
答:实验成果:
运营前:
运营后:
标志位分别为NV UP EI NG NZ NA PO CY
SUM值同当前AX,SUM=FEB3。
问题:无
实验二 指令寻址方式练习
一、实验目与规定
1.掌握汇编语言调试工具(DEBUG)基本用法;
2.掌握8086寻址方式。
二、实验内容
练习辨认8086有关指令寻址方式。
DEBUG命令及其功能:
命令
功能
格式
A
对语句进行汇编
A[<地址>]
C
比较内存内容
C<源地址范畴><目的>
D
显示内存内容
D[<地址>]或[<地址范畴>]
E
修改内存内容
E<地址>[<字节串>…]
F
填充内存内容
F<地址范畴><要填入字节或串>
G
运营一种程序或程序段
G[=<始址>][<断点>…]
H
十六进制加减法运算
H<数值1><数值2>
I
读/显示输入字节
I<端口地址>
L
装入文献或磁盘扇区
L[<地址>[<盘号><相称扇区><扇区数>]]
M
传送内存块
M<源地址范畴><目的地址>
N
定义文献名和参量
N<文献名>[<文献名>…]
O
输出命令
O<端口地址><字节>
P
单步,并跳过子程序
P[=<地址>][<执行条数>]
Q
退出DEBUG
Q
R
显示和修改寄存器内容
R[<寄存器>]
S
对字符进行检索
S<地址范畴><要检索字节>
T
跟踪执行和显示
T[=<地址>][<跟踪条数>]
U
对指令进行反汇编
U[<地址范畴>]
W
写入文献或磁盘扇区
W[<地址>[<盘号><相称扇区><扇区数>]]
其中<…>表达输入内容;[…]表达为可选项。
三、实验设备
微型计算机(80x86系列)。
四、实验参照程序
DSEG SEGMENT
ARRAY DB 11,56,78,8,76,90,96,33,21,06
COUNT DW $ - ARRAY
RELUST DB ?
DSEG ENDS
SSEG SEGMENT PARA STACK 'STACK'
SDAT DB 50 DUP (?)
TOP EQU LENGTH SDAT
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG ,DS:DSEG ,SS:SSEG
START: MOV AX ,DSEG
MOV DS ,AX ;寄存器寻址
MOV AX ,SSEG
MOV SS ,AX
MOV AX ,TOP
MOV SP ,AX
MOV BX ,OFFSET ARRAY
MOV CX ,COUNT ;直接寻址
DEC CX
MOV AL ,[BX] ;寄存器间接寻址
AGAIN: INC BX
CMP AL ,[BX]
JAE NEXT
MOV AL ,[BX]
NEXT: DEC CX
JNZ AGAIN
MOV RELUST,AL
MOV AH,4CH ;及时寻址
INT 21H
CSEG ENDS
END START
五、实验环节
1.D:\MASM>MASM SY2.ASM
2.D:\MASM>LINK SY2.OBJ
3.D:\MASM>SY2.EXE
4.D:\MASM>DEBUG SY2.EXE
六、实验结论
1.指出参照程序中带下划线指令中源操作数寻址方式?
2.程序运营后AL中值是多少?
3.分析实验成果及所遇到问题,并阐明解决办法。
答:运营成果:
AL=60H
需要注意问题:
MASM为16位运营方式,在64位机上需要模仿器。
MASM不支持非8.3文献命名方式。建议使用短目录及短文献名。
寻址方式:MOV AL ,[BX]是按字节寻址而不是按字寻址。
MOV AX ,SSEG
MOV SS ,AX
MOV AX ,TOP
MOV SP ,AX
此四句无必要,使用ASSUME伪指令后,SS段运营时将自动装入,SP将自动置数。只需对DS或ES手动装入即可。此外,此汇编程序中没有堆栈操作指令,可以不合用STACK段。
展开阅读全文