汇编语言实验教材.docx

上传人:b****7 文档编号:8977925 上传时间:2023-02-02 格式:DOCX 页数:44 大小:170.48KB
下载 相关 举报
汇编语言实验教材.docx_第1页
第1页 / 共44页
汇编语言实验教材.docx_第2页
第2页 / 共44页
汇编语言实验教材.docx_第3页
第3页 / 共44页
汇编语言实验教材.docx_第4页
第4页 / 共44页
汇编语言实验教材.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

汇编语言实验教材.docx

《汇编语言实验教材.docx》由会员分享,可在线阅读,更多相关《汇编语言实验教材.docx(44页珍藏版)》请在冰豆网上搜索。

汇编语言实验教材.docx

汇编语言实验教材

第一部分指令系统

一、总体实验目的

学习掌握调试软件(DEBUG或TDEBUG)的基本使用方法。

掌握80X86的寻址方式

了解状态标志与控制标志的特点。

熟练掌握指令系统的基本操作

掌握DOS系统功能调用

掌握运算符及伪指令系统的基本操作

二、总体实验内容

将寻址方式、状态标志、指令系统及运算符与伪指令系统等内容分为几部分,对其分别进行调试与验证。

实验一寻址方式

已知:

(60000H)=12H,(60001H)=34H,(60002H)=56H,(60003H)=78H,(70000H)=0ABH,(70001H)=0CDH,(70002H)=0EFH,(70003H)=0DH。

分别执行下列指令后,填入指定寄存器的当前内容。

MOVAX,6000H

MOVDS,AX

MOVAX,7000H

MOVSS,AX

MOVBX,0

MOVBP,0

MOVSI,2

MOVAX,BX;AX=_______________

MOVAX,[0000H];AX=_______________

MOVAL,[0000H];AL=_______________

MOVAX,[BX];AX=_______________

MOVAL,[BX+1];AL=_______________

MOVAX,[BX+1];AX=_______________

MOVAL,[BX+2];AL=_______________

MOVAX,[BX+2];AX=_______________

MOVAX,[BX+SI];AX=_______________

MOVAX,[BP+SI];AX=_______________

按下列要求分别编写指令组,将BLOCK数组中的第六个子数据存放在DX寄存器中。

BLOCKDW1234H,5678H,’AB’,’CD’

寄存器间接寻址

寄存器相对寻址

基址加变址寻址

实验二标准寄存器

MOVAL,76H

ADDAX,0A6H

将操作码改为ADC、SUB、SBB,分别执行后填表

操作码

AL

OF

SF

ZF

AF

PF

CF

ADD

ADC

SUB

SBB

1C

1C

D0

D0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

MOVAX,2376H

ADDAX,00A6H

将操作码改为ADC、SUB、SBB,分别执行后填表

操作码

AL

OF

SF

ZF

AF

PF

CF

ADD

ADC

SUB

SBB

MOVAX,0A95BH

ADDAX,8CA2H

将操作码改为ADC、SUB、SBB,分别执行后填表

操作码

AL

OF

SF

ZF

AF

PF

CF

ADD

ADC

SUB

SBB

 

MOVAX,8889H

ADDAX,7777H

将操作码改为ADC、SUB、SBB,分别执行后填表

 

操作码

AL

OF

SF

ZF

AF

PF

CF

ADD

ADC

SUB

SBB

MOVAX,8765H

ANDAX,89ABH

将操作码改为OR、XOR、TEST分别执行后填表

操作码

AL

OF

SF

ZF

AF

PF

CF

AND

OR

XOR

TEST

MOVAX,2736H

SHLAX,1

将操作码改为SHR、SAR分别执行后填表

操作码

AL

OF

SF

ZF

AF

PF

CF

SHL

SHR

SAR

MOVAX,2736H

MOVCL,1

SHLAX,CL

将操作码改为SHR、SAR分别执行后填表

操作码

AL

OF

SF

ZF

AF

PF

CF

SHL

SHR

SAR

CLC

MOVAX,0A95BH

ROLAX,1

将操作码改为ROR、RCL、RCR分别执行后填表

 

操作码

AL

OF

SF

ZF

AF

PF

CF

ROL

ROR

RCL

RCR

STC

MOVAX,0A95BH

ROLAX,1

将操作码改为ROR、RCL、RCR分别执行后填表

操作码

AL

OF

SF

ZF

AF

PF

CF

ROL

ROR

RCL

RCR

实验三十进制加法运算指令

MOVAL,78H

ADDAL,26HAL=_______

DAAAL=_______CF=_______AF=_______

MOVAX,78H

ADDAX,26HAX=_______

DAAAX=_______CF=_______AF=_______

MOVAX,5678H

ADDAX,1224HAX=_______

DAAAX=_______CF=_______AF=_______

MOVAL,07H

ADDAL,09HAX=_______

DAAAX=_______CF=_______AF=_______

MOVAL,07H

ADDAL,09HAX=_______

AAAAX=_______CF=_______AF=_______

试将上述指令改为减法后,再填入指定的寄存器或标志位的值

 

实验四乘法运算指令

MOVAL,96H

MOVBL,12H

MULBLAX=_______CF=_______OF=_______

MOVAL,96H

MOVBL,12H

IMULBLAX=_______CF=_______OF=_______

MOVAX,916EH

MOVBX,18F2H

MULBXDX=_______AX=_______CF=_______OF=_______

MOVAL,07H

MOVBL,09H

MULBLAX=_______

AAMAX=_______CF=_______OF=_______

试将上述指令改为除法指令后,再填入指定的寄存器或标志位的值

 

实验五逻辑运算指令

ANDAX,AXAX=_______CF=_______ZF=_______

ORAX,AXAX=_______CF=_______ZF=_______

XORAX,AXAX=_______CF=_______ZF=_______

用一条逻辑指令使AX寄存器的高3位清0,其余位不变

_______________________________________________________________

用一条逻辑指令使BX寄存器的高3位置1,其余位不变

_______________________________________________________________

用一条逻辑指令使CX寄存器的高3位取反,其余位不变

______________________________________________________________

用一条逻辑指令测试DX寄存器的D3位

______________________________________________________________

用一条逻辑指令将AX中与BX中的不相同的位均置为1,其余位不变

_______________________________________________________________

 

实验六循环移位指令

MOVAL,56H

SHLAL,1AL=_______OF=____SF=____ZF=____PF_=___CF=____

MOVAL,56H

SHRAL,1AL=_______OF=____SF=____ZF=____PF_=___CF=____

MOVAL,87H

SHLAL,1AL=_______OF=____SF=____ZF=____PF_=___CF=____

MOVAL,87H

SHRAL,1AL=_______OF=____SF=____ZF=____PF_=___CF=____

MOVDX,0B9H

MOVCL,3

STC

()

在下面的括号中分别填入下列指令,程序段执行后填表

 

指令

DX的值

CF

SHRDX,1

SARDX,CL

SHLDX,CL

SHLDL,1

RORDX,CL

ROLDL,CL

SHLDH,1

RCLDX,CL

RCRDL,1

 

实验七串操作指令

程序段如下:

CLD

MOVAL,12H

MOVSI,2000H

MOVDI,3000H

()

在上述程序中的括号里分别填入下列指令。

REPMOVSB

REPLODSB

REPSTKSB

REPZSCASB

REPZCMPSB

试指出程序段分别完成什么动作

试用其他指令完成上述指令的功能

将REPZ改成REPNZ后结果如何改变

 

实验八程序控制类指令

在下列程序的括号中分别填入指令如下。

aLOOPL20

bLOOPZL20

cLOOPNZL20

试说明在三种情况下,程序执行后,AX,BX,CX,DX四个寄存器的内存,并填入表中。

XORAX,AX

MOVBX,2

MOVCX,4

MOVDX,3

L20:

INCAX

ADCBX,AX

SHRDX,1

()

HLT

指令

AX

BX

CX

DX

LOOPL20

LOOPZL20

LOOPNZL20

指令序列如下:

CMPAX,BX

JXXL1

请在能引起转移到L1单元的条件转移指令下面画勾,AX,BX的内容给定如下:

AX

BX

JB

JNB

JBE

JA

JL

JNL

JLE

JG

1F52H

1F52H

FF82H

007EH

58BAH

020EH

09A0H

1E97H

FF5CH

FF8BH

8AEAH

FC29H

 

实验九80386、80486增强与增加指令

数据传送指令

扩展传送指令MOVSX/MOVZX

设AX=1234H,BX=8765H

分别执行下列指令后,将32位寄存器ECX的内容填入表中:

指令

ECX

MOVSXECX,AX

MOVSXECX,BX

MOVZXECX,AX

MOVSXECX,BX

所有通用寄存器的内容进栈、弹栈指令PUSHA/POPA、PUSHAD/POPAD

试指出执行下列指令前后的SP值及进栈、弹栈了那些寄存器及其顺序。

指令

前SP后

寄存器及其顺序

PUSHA

POPA

PUSHAD

POPAD

字节交换指令BSWAP

MOVEAX,12345678HEAX=______________

BSWAPEAXEAX=______________

(2)算术运算类

交换加法指令XADD

设AX=1234H,BX=5678H

执行XADDAX,BX后AX=_____________BX=____________

试指出与ADD指令的不同点。

有符号数乘法指令IMUL

设AX=1234H,BX=5678H

执行IMULAX,BX,20H后AX=_____________BX=____________

 

实验十DOS系统功能调用

实验目的

掌握利用DOS/BIOS系统功能调用实现字符输入输出的方法。

实验原理

DOS功能调用是指中断类型号21H(INT21H)的调用。

功能调用是0~57H(称为DOS功能调用)。

INT21H功能调用分为字符输入、字符输出、磁盘控制、文件管理等种类。

本实验着重了解字符输入输出DOS功能调用。

常用的有键盘及显示(01H)、字符显示(功能号21H)、内存字符串输出(功能号09H)、无显示字符输入(功能07H)等。

实验内容

用01H号调用输入一个字符,用02H号调用显示输入的字符。

用0H调用的结束程序。

用DEBUG调试满足上述要求的程序。

MOVAH,01H

INT21H

MOVDL,AL

MOVAH,2

INT21H

MOVAH,0

INT21H

用DEBUG状态下用A命令输入上面程序,用G命令执行。

此时屏幕显示两个相同的字符,观察第一个是不是01H号调用输入后显示的,第二个是不是02H号调用后显示的。

用0AH号调用输入一个字符串,用09H号调用显示输入的字符串。

TABDB50,50DUP(‘$’)

LEADX,TAB

MOVAH,0AH

INT21H

LEADX,TAB

MOVAH,09H

INT21H

用DOS07H号调用和09H号调用实现密码输入和识别。

编程要求如下:

程序提示:

PleaseInputPassword:

由键盘输入密码。

若正确,提示OK;若不正确,提示Error。

密码由回车结束。

密码字符和全部信息在程序首部设置。

程序框图(见图1)

 

 

 

N

Y

 

图1程序框图

 

程序清单

CODESEGMENT

ORG100H

ASSUMECS:

CODE

START:

JMPPP

A1DB‘WORD’

N1EQU$-A1

A2DB‘OK$’

A3DB‘Error$’

A4DB‘PleaseInputPassword$’

A5DB10DUP(?

PP:

MOVAX,CS

MOVDS,AX

MOVES,AX

MOVSS,AX

LEADX,A4

MOVAH,9

INT21H

MOVDX,0

MOVDI,OFFSETA5

PA:

MOVAH,07H

INT21H

CMPAL,0DH

JZPB

INCDX

STOSB

LOOPPA

PB:

MOVCX,DX

JNZPC

LEASI,A1

LEADI,A5

REPZCMPSB

JNZPC

LEADX,A2

MOVAH,9

INT21H

JMPPD

PC:

LEADX,A3

MOVAH,9

INT21H

PD:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

实验十一运算符与伪指令系统

将下列语句分配的存储空间及初始化的数据值填入表中。

a.A1DB‘BYTE’,12,12H,2DUP(0,?

3DUP(1,2),?

b.A2DW4DUP(0,1,2),?

-5,’BY’,’TE’,256H

c.A3DWA1,$+6,A2-A1

A1

A2

A3

请总结DB、DW数据定义的特点。

对于下列的符号定义,分别指出下列指令的错误并改正

A1DB?

A2DB10

K1EQU1024

K2=256

a.MOVK1,AX

b.MOVA1,AX

c.MOVBX,A1

MOV[BX],100;将100送入A1单元

d.CMPA1,A2

e.K1EQU2048

对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?

A1DB?

A2DW10DUP(?

A3DB10DUP(?

A4DB‘XYZ’,’123’

a.MOVAX,TYPEA1AX=_____________

b.MOVAX,TYPEA2AX=_____________

c.MOVAX,LENGTHA1AX=_____________

d.MOVAX,LENGTHA2AX=_____________

对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?

A1DW?

A2DW10DUP(?

A3DB10DUP(?

A4DB‘XYZ’,’123’

a.MOVAX,TYPEA1AX=_____________

b.MOVAX,TYPEA2AX=_____________

c.MOVAX,LENGTHA1AX=____________

d.MOVAX,LENGTHA2AX=_____________

e.MOVAX,LENGTHA3AX=_____________

f.MOVAX,LENGTHA4AX=_____________

g.MOVAX,SIZEA2AX=_____________

h.MOVAX,SIZEA3AX=_____________

第二部分汇编语言程序设计

一、总体实验目的

熟悉如何在微机上进行编辑、汇编、链接、调试和运行汇编语言程序的过程。

掌握分支程序设计、循环程序设计、子程序设计的方法。

了解汇编语言与高级语言的接口。

二、程序框架

EXE文件的程序框架

程序框架中一般要定义一个数据段和一个代码段,根据需要还可以定义堆栈段和附加段。

通常指令放在代码段,变量放在数据段。

DATASEGMENT

在此加入数据定义

DATAEND

STACKSEGMENT

STADB20DUP(?

TOPEQU$-STA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

:

DATA,SS:

STACK,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSS,STACK

MOVAX,TOP

MOVSP,AX

在此加入指令段

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

COM文件的程序框架

程序框架中只有一个段并限制在64K之内,COM程序的堆栈由DOS自动产生,数据定义在代码段内,COM程序总是从偏移地址100H开始执行。

CODESEGMENT

MAINPROCFAR

ASSUMECS:

CODE,SS:

CODE,DS:

DATA

ORG100H

PUSHDS

XORAX,AX

PUSHAX

在此加入指令段或数据定义

RET

MAINENDP

CODEENDS

ENDMAIN

自动产生汇编语言程序框架

TurboC中提供了一个自动产生汇编语言框架的方法

 

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

实验目的

学习数据传送和算术运算指令的用法

熟悉在PC机上编辑、汇编、链接、调试和运行汇编语言程序的过程

实验内容

将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DATA2为首的5个内存单元中,结果送回DATA1处。

程序框图

见图2

程序清单

DISPMACROX

MOVDL,X

MOVAH,02H

INT21H

ENDM

DATASEGMENT

DATA1DB‘12732’

DATA2DB‘06815’

NEQU$-DATA2

DATAENDS

STACKSEGMENTSTACK

STADB20DUP(?

TOPEQU$-STA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,TOP

MOVSP,AX

LEASI,DATA1;#

MOVBX,0

MOVCX,N

CALLDISPL;显示被加数

DISP‘+’

LEASI,DATA2

MOVBX,0

MOVCX,N

CALLDISPL;显示加数

DISP‘=’

LEADI,DATA1

MOVCX,N

CALLADDA;调用加法子程序

LEASI,DATA1

MOVBX,0

MOVCX,N

CALLDISPL;显示运算结果

DISP0DH

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1