电信微机原理与汇编语言实验指导书Word文档格式.docx
- 文档编号:19675617
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:19
- 大小:24.81KB
电信微机原理与汇编语言实验指导书Word文档格式.docx
《电信微机原理与汇编语言实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《电信微机原理与汇编语言实验指导书Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
2、熟悉有关显示DOS基本命令
[思考与练习]
1、显示一个字符串“ABC123”。
2、编一显示“HOWAREYOU!
”的程序。
【实验报告内容】
1、实验目的、仪器、原理和内容
2、要求写出算法和算法流程图。
3、程序必须在微机上编辑和汇编。
4、调试程序并进行分析并给出实验结果。
实验二数据排序
1.掌握循环、分支程序的设计方法。
2.了解数据排序的简单算法。
“冒泡排序”算法是从第一个数开始依次将相邻的两个数比较,如果前面的数比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序。
[实验方法及步骤]
[实验题目]
把从MEM单元开始的10个16位有符号数按从大到小的顺序排列。
DATASEGMENT
MEMDW-1,0,24,-32,100,345,-39,1000,2345,-18
DATAENDS
CODE,DS:
DATA
MOVAX,DATAADDSI,2DECBL
MOVDS,AXCMPAX,[SI]JNZNEXT1
LEADI,MEMJLNEXT3MOVAH,4CH
MOVBL,9XCHAX,[SI]INT21H
NEXT1:
MOVSI,DIMOV[SI-2],AXMAINENDP
MOVCL,BLNEXT3:
DECCLCODEENDS
NEXT2:
MOVAX,[SI]JNZNEXT2ENDMAIN
1、熟悉冒泡排序原理。
2、熟悉程序结构(循环和分支)及程序设计方法
1、比较BX,CX,DX中带符号数的大小,将最大的数放在DX中。
2、两个字符串比较,若相同,把0存入RESULT单元,若不同,把-1存入RESULT单元。
3、从FIRST开始的10个单元中存放着一个字符串,结束符为‘$’。
编写一个程序,统计该字符串中字母‘a’的个数。
实验三码制转换
1掌握简单的数值转换算法及数值的各种表达方法。
2掌握码制转换的基本方法。
1.BCD码的基本表示方法
压缩的BCD码和非压缩的BCD码两种格式。
压缩的BCD码用4位二进制数表示一个十进制数位,如9502d表示为:
1001010100000010,非压缩的BCD码以8位为一组表示一个十进制数位,8为中的低4位表示8421的BCD码,而高4位没有意义,如9502d则表示为:
uuuu1001uuuu0101uuuu0000uuuu0010
2.二进制到BCD码转换的基本方法
其中,用到除法指令
DIVOPD;
AL<
=AX÷
OPD(字节)的商,AH<
=余数。
=DXAX÷
OPD(字)的商,AH<
3.BCD码转换到二进制的基本方法,是前者的逆变换。
用到乘法指令:
MULOPD;
AX<
=AL×
OPD(字节)
DXAX<
=AX×
OPD(字)
4、ASCII码的基本表示方法
用7位二进制编码来表示128个字符和符号,本实验所用到的ASCII码表如下:
字符
1
2
3
4
5
6
7
8
ASCII码
30H
31H
32H
33H
34H
35H
36H
37H
38H
9
A
B
C
D
E
F
39H
41H
42H
43H
44H
45H
46H
5、二进制到ASCII码转换的基本方法
查表法,比较法。
6、ASCII码到二进制转换的基本方法
≤9“与”0FH
>
9减7后,“与”0FH
编写程序将AL和BL中的非压缩BCD码合并成一个压缩的BCD码,存在AL中。
CODESEGMENT
MAINPROCFARSHLAL,CLMAINENDP
MOVAL,04HORAL,BLCODEENDS
MOVBL,05HMOVAH,4CHENDMAIN
MOVCL,4INT21H
熟悉微机原理中第一章有关数制及相互转换的基础知识
1、编写一个程序,将变量ABC中的16位无符号数,用"
除十取余"
的方法转换成十进制数,要求结果用压缩BCD码保存在RESULT单元中。
2、若在内存的输入缓冲区ASCBUF中,已有若干个用ASCII码表示的十进制数码.要求把它们转换为相应的BCD码,且把两个相邻存储单元的十进制数码的BCD码合并在一个存储单元中,且地址高的放在前四位,存放在BCDBUF区域.。
3、将AX拆为二个ASCII码,并存入Result开始的二个单元。
实验四实时显示日期和时间(综合)
一、实验目的
1、掌握子程序设计基本方法,包括子程序定义、调用、返回、参数传递。
2、学习如何进行数据转换和DOS功能调用(系统时间提取、预置等)
3、学习和掌握如何通过查表法提取所需数据。
二、实验环境
1、硬件:
微机
2、软件:
EDIT、MASM和LINK
三、实验原理
系统功能调用是DOS为系统程序员及用户提供的一组常用子程序。
DOS规定用中断指令INT21H进入各功能调用子程序的总入口,再为每个功能调用规定一个功能号以便进入相应各个子程序的入口。
子程序的入口参数及出口参数在每个功能调用的说明中可以查到。
DOS系统功能调用的使用方法如下:
(1)在AH寄存器中存入所要调用功能的功能号;
(2)根据所调用功能的规定设置入口参数;
(3)用INT21H指令转入子程序入口;
(4)相应的子程序运行完后,可以按规定取得出口参数。
DOS共提供了80个功能调用。
大致分为设备管理、文件管理和目录管理等几类。
在DOS功能中,通过对中断INT21H功能号(2AH-2DH)调用可实现系统时间提取、预置,在屏幕上实时显示日期和时间。
功能号2AH:
取日期返回参数DH:
DL=月:
日(二进制)
功能号2BH:
设置日期调用参数CX:
DH:
DL=年:
月:
日返回参数AL=0成功否则失败
功能号2CH:
取时间返回参数CH:
CL=时:
分
DL=秒:
1/100秒
功能号2DH:
设置时间调用参数CH:
分返回参数AL=0成功否则失败
四、实验题目
利用DOS功能,实现系统时间提取、预置,要求在屏幕上实时显示日期和时间,按任意键停止。
五、思考题
1、编写16进制转换成10进制的程序。
2、编写10进制转换成16进制的程序。
六、预习要求
1、熟悉和掌握实验目的。
2、复习相关知识,初步完成实验内容的源程序和操作步骤。
七、实验报告要求
1、要求写出算法和算法流程图。
2、记录实验中的源程序。
3、记录实验中的执行结果。
4、对照预习时的源程序是否与实验记录相同,分析原因。
DATASEGMENT
BUFDB4DUP(?
),24H
mes1db'
请输入年如2007:
'
mes2db'
请输入月和日如0523:
mes3db'
请输入小时和分钟如1125:
mes4db'
请输入秒如30:
crlfdb10,13,24h
DATAENDS
codesegment
assumecs:
code,ds:
code
mainprocfar
movax,data
movds,ax
calldispxt;
显示系统日期和时间
leadx,mes1
movah,9
int21h
calldecibin;
设置系统日期2007:
5:
8
movcx,bx
leadx,mes2
calldecibin
movdx,bx
movah,2bh
int21h
movch,11h;
设置系统时间17:
16:
30
movcl,10h
movdh,1eh
movah,2dh
quit:
movah,4ch
ret
mainendp
;
----------------------------
dispxtproc
movah,2ah;
取系统日期
pushdx;
显示年
movax,cx
callh16bcd
movdl,'
:
movah,2
popdx;
显示月和日
moval,dh
callhexbcd
pushdx
popdx
moval,dl
movdl,10
movdl,13
movah,2ch;
取系统时间
moval,ch;
显示时
moval,cl;
显示分
moval,dh;
显示秒
dispxtendp
-----------------------------
hexbcdproc
pushcx
movbl,10
movah,0
divbl
movcl,ah
addal,30h
movdl,al
addcl,30h
movdl,cl
popcx
hexbcdendp
----------------------------
h16bcdproc
MOVSI,OFFSETBUF
MOVCX,4
MOVBX,1000
LP:
CALLSUB1
ADDAL,30H
MOV[SI],AL
INCSI
MOVDI,DX
MOVAX,BX
MOVBX,10
MOVBX,AX
MOVAX,DI
DECCX
JNZLP
leadx,buf
RET
h16bcdENDP
----------------------
SUB1PROCNEAR
MOVDX,0
DIVBX
SUB1ENDP
-------------
decibinprocnear
movbx,0
newchar:
movah,1
subal,30h
jlexit
cmpal,9d
jgexit
cbw
xchgax,bx
movcx,10d
mulcx
addbx,ax
jmpnewchar
exit:
decibinendp
-----------------------------
codeends
endmain
附录1DEBUG主要命令
DEBUG是为汇编语言设计的一种高级工具,它通过单步、设置断点等方式为汇编语言程序员提供非常有效的调试手段。
DEBUG程序的调用
在DOS的提示符下,键入命令:
c:
\debug[d:
][path][filename[.ext][parm1][parm2]
其中,文件名是被调试文件的名字。
如用户键入文件,则DEBUG将指定的文件装入存储器中,用户便可对其进行调试。
如果未键入文件名,则用户可用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。
命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。
注意:
文件的扩展名不能省略。
在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。
1.显示存储单元的命令D
显示存储单元的命令的格式为:
-D[address]或_D[rang]
例如,按指定范围显示存储单元内容的方法为:
-d100120
18E4:
0100c70604023801c706-06020002c7060802G…8.G…..G…
01100202bb0402e80200-CD20505156578B37..;
..h..MPQVW.7
0120bB
其中,0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边的ASCII字符表示每个字节,·
表示不可显示的字符。
这里没有指定段地址,D命令自动显示DS段的内容。
如果只指定首地址,则显示从首地址开始的80个字节的内容。
如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。
2.修改存储单元内容的命令E
修改存储单元内容的命令有2种。
第一种格式可用给定的内容替代指定范围的存储单元内容。
命令格式为:
-Eaddress[list]
例如,-EDS:
100F3’XYZ’8D。
其中F3,’X’,’Y’,’Z’和8D各占一个字节。
该命令可用这5个字节来替代存储单元DS:
0100到0104的原先的内容。
第二种格式采用逐个单元相继修改的方法。
-Eaddress
100。
则可能显示为:
18E4:
010089.-
如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键,完成修改,并显示下一个单元的内容:
010089.781B.-
这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。
3.填写命令F(FILL)
其格式为:
-Frangelist
例如:
-F4BA:
01005F3’XYZ’8D。
使04BA:
0100-0104单元包含指定的5个字节的内容。
如果list中的字节数超过指定的范围,则忽略超过的项;
如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。
4.检查和修改寄存器内容的命令R(register)
三种格式:
1)显示CPU内所有寄存器内容和标志位状态,格式为:
-R
例如,-r。
AX=0000BX=0000CX=010ADX=0000SP=FFFEBP=0000SI=0000DI=0000
DS=18E4ES=18E4SS=18E4CS=18E4IP=0100NVUPDIPLNZNAPONC
0100c70604023801MOVWORDPTR[0204],0138DS:
0204=0000
2)显示和修改某个寄存器内容,格式为:
-Rregistername
例如,键入
-RAX
系统将响应如下:
AXF1F4
即AX寄存器的当前内容为F1F4,若不修改则按ENTER键;
否则,可键入欲修改的内容,如:
-Rbx
BX0369:
059F
则把BX寄存器的内容修改为059F。
3)显示和修改标志位状态,命令格式为:
-RF
系统将响应,显示信息的含义如下表所示,如:
OYDNEINGZRACPECY
标志位符号表
标志位名称
置位
复位
溢出Overflow
OV
NV
方向Direction
DN
UP
中断Interrupt
EI
DI
符号Sign
NG
PL
零Zero
ZR
NZ
辅助进位AnxigiaryCarry
AC
NA
奇偶Parity
PE
PO
进位Carry
CY
NC
此时,如果不修改其内容可按ENTER键,否则,键入欲修改的内容,如:
OVDNEINGZRACPECY-PONZDINV
即可。
可见,键入的顺序可以是任意的。
5.运行命令G
为了检查程序运行是否正确,希望在运行中能设置断点以便逐段调试程序。
运行命令的格式为:
-G[=address1][address2[address3…]]
其中地址1指定运行的起始地址,如果不指定则从当前的CS:
IP开始运行。
后面的地址均为断点地址,当指令执行到断点时,停止执行并且显示当前所有寄存器即标志位的内容和下一条将要执行的指令。
6.跟踪命令T
跟踪命令有两种格式:
(1)逐条指令跟踪
-T[=address]
从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。
如果未指定地址则从当前的CS:
IP开始执行。
(2)多条指令跟踪
-T[=address][value]
从指定地址起执行n条指令后停下来,n由value指定。
7.汇编命令A
汇编命令的格式为:
-A[address]
该命令允许键入汇编语言语句,并且能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。
必须注意:
DEBUG把键入的数字均看成十六进制数,若要键入十进制数,则其后应加以说明,如100D。
8.反汇编命令U
(1)从指定地址开始,反汇编32个字节,其格式为:
-u[address]
-u100
0100c70604023801movwordptr[0204],0138
0106c70606020002movwordptr[0206],0200
010cc70606020202movwordptr[0208],0202
0112BB0402movbx,0204
0115E80200call011A
0118CD20int20
011A50pushax
011B51pushcx
011C56pushsi
011D57pushdi
011E8B37movsi,[Bx]
如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
(2)对指定范围内的存储单元进行反汇编,其格式为:
-U[range]
-u10010c
010cc70606020202movwordptr[0208],010
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电信 微机 原理 汇编语言 实验 指导书