《2022年2022年汇编语言实 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编语言实 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 实 验 一汇 编 语 言 源 程 序 的 输 入一、实验目的1.通过实验了解和熟悉微机系统的配置。2.学习在 DEBUG 状态下输入汇编源程序的方法。3.初步掌握调试(在 DEBUG 状态下)的过程。二、实验原理1.本实验要求在DEBUG 状态下输入汇编源程序,并用 DEBUG 命令进行调试。用单步跟踪的方法验证指令的功能。2.以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行结果。注:微机进入 DEBUG 状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”;在 DEBUG 状态下执行程序时,“INT 20H”指令可使系统执行完
2、该指令前的程序时返回到“-”提示符状态,并且恢复CS和 IP 寄存器原来的值。三、实验仪器微机一台,软盘一块。四、实验步骤1.开机和关机操作顺序开机:先打开微机外部设备电源开关,如显示器、打印机,最后打开主机电源开关。关机:与开机相反,先关掉主机电源开关,然后关闭所有外设的电源开关。2.开机之后,把已准备好的PC-DOS 系统软盘插入到A 驱动器中,等待微机系统自检完成。若自检无故障,计算机将自动引导A 驱动器的DOS 操作系统,实现 DOS 系统的启动,并出现提示符:A 若微机系统带有硬盘驱动器,且 PC-DOS 操作系统已装入硬盘,机器自检后(A 驱动器门应打开),可以在硬盘上直接启动PC
3、-DOS 操作系统,此时,出现提示符:C 若计算机启动、自检出现故障,不能启动DOS 系统时,可同时按下Ctrl+Alt+Del三个键,再重新启动一次(热启动),或关断主机电源重新送电一次(冷启动),若再失败,说明主机确有故障,应停止上机。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 20 页 -2 3.装入 DEBUG 程序若计算机系统启动正常,可以从磁盘上调用DEBUG 程序到内存。一般C 盘上或PC-DOS 软盘上装有DEBUG 软件,若没有,可以用COPY 命令从其它盘拷贝过来,然后从装有 DEBUG 的磁盘上调用DEBUG 程序。例如:C DEBUG(回车符)(DEB
4、UG 提示符)或A DEBUG 当显示器出现提示符“”时,说明已进入DEBUG 状态,这时,可用 DEBUG 命令进行操作。4.用 DEBUG 的 Register 命令检查所有寄存器内容,并作记录。命令格式:R 寄存器名 该命令的功能是显示寄存器的内容,或修改某一指定寄存器内容,若寄存器名 缺省,则显示所有寄存器内容。例如:R 5.用 DEBUG 的 Assemble 命令输入汇编源程序。格式:A 内存地址 注:用“”符号括起来的部分表示可以省略。该命令的功能是从指定的内存地址开始(括号不要输入)逐条输入汇编语言源程序并汇编成机器码存入内存。若地址缺省,则接上一个A 命令最后一条指令之后输入
5、汇编语句,若没有用过A 命令,则从CS:0100H 地址开始输入。例如:A 0CD3:0100在输入A 命令之后,或每输入一条指令之后,显示器的左端给出了内存的段地址和偏移地址。每条指令均用回车()结束。若输入的指令有语法错误,DEBUG 拒绝接收,并给出提示,此时可以重新输入。程序的最后一条指令输入完之后,再按一次回车键(),即可结束汇编命令,回到DEBUG 提示符“”状态。6.用 DEBUG 的 Unassemble命令反汇编。命令格式:名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 20 页 -3 U 起始地址 终止地址 该命令的功能是从起始地址到终止地址反汇编目标码,缺省
6、值是接上一个U 命令或从CS:0100H 地址开始。例如:U 显示器上将显示程序的内存地址、指令机器码的汇编源程序三列对照清单。7.用 DEBUG 的 Trace 命令单步跟踪程序。命令格式:T =起始地址 指令条数 该命令的功能是从指定的起始地址开始逐条执行指令,每执行完一条指令,屏幕显示所有寄存器内容和下一条指令地址和指令。若=起始地址 缺省,则 T 命令从 CS:IP 地址开始执行指令。例如:T重复这一过程,即可看到每条指令执行后,所有寄存器和标志寄存器的标志位内容。此时,要检查内存单元的数据,可用DEBUG 的 Dump 命令,命令格式:D起始地址 终止地址 该命令的功能是从起始地址到
7、终止地址,连续显示存贮器单元的内容。若地址缺省,则接上一个D 命令或从DS:0100H 地址开始显示。例如:D五、实验内容1用 DEBUG 分析下列调整指令执行前和执行后的执行结果MOV AL,38HMOV AL,71H MOV BL,19HMOV BL,93H ADD AL,BL;AL=H AF=CF=ADD AL,BL;AL=H AF=CF=DAA;AL=H AF=CF=DAA;AL=H AF=CF=MOV AH,00HMOV AH,00H?MOV AL,05HMOV AL,35H MOV BL,09 HMOV BL,39H ADD AL,BL;AL=AF=CF=ADD AL,BL;AL=
8、H AF=CF=AAA;AX=HAAA;AX=H MOV AL,06HMOV AX,0308H 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 20 页 -4 MOV BL,09HMOV BL,9 MUL BL;AX=HAAD;AX=H AAM;AX=HDIV BL;AH=H AL=H MOV AX,000AHMOV AX,0FFF3H MOV CL,06HMOV BL,03H MUL CL;AH=H AL=HIDIV BL;AH=H AL=H OF=CF=OF=CF=CLCCLC MOV AL 57HMOV AL,FAH ROL AL,01H;AL=H CF=SAR AL,1;
9、AL=H CF=RCL AL,01H;AL=H CF=SHR AL,1;AL=H CF=2.利用DEBUG程序中的”E?命令,将两个多字节数”12345678H”和”9ABCDEF0H”分别送入起始地址为DS:0200H 和 DS:0204H 两个单元中。在 DEBUG 中用”E”命令修改内存单元内容:E?DS:0200 78 56 34 12 F0 DE BC 9A 在 DEBUG 中用”D”命令观察 DS:0200HDS:020BH 字节单元的内容。3.分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将 DS:0200H 单元和 DS:0204H 单元的数据相加,并将运算结果存放在D
10、S:0208H 单元中。(注意:在此处,请先用Q 命令退出 DEBUG,然后再重新进入。)程序未执行前,用”R”命令观察相关寄存器的内容。R 如:(AX)=,(BX)=,(CS)=,(IP)=用“A”命令编辑和汇编程序 A126C:0100MOVAX,0200 126C:0103MOVBX,0202 126C:0107ADDAX,0204 126C:010BADCBX,0206 126C:010FMOV0208,AX 126C:0112MOV020A,BX 126C:0116HLT 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 20 页 -5 126C:0117注意:DEBUG
11、 约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。用”T”单步操作命令对源程序逐条执行,全部执行完后观察AX、BX、CS、IP 寄存器内容的变化,并与预计的结果比较。(AX)=,(BX)=,(CS)=,(IP)=最后用”D”命令观察 DS:0208HDS:020BH 字节单元的内容。(DS:0208H)=,(DS:0209H)=,(DS:020AH)=,(DS:020BH)=。五、实验报告要求1.整理每条指令执行的结果2.比较实验记录与理论分析的结果是否相同,若有不同,找出差别及问题所在。3总结本次实验的体会。六、参考资料OF(ov/nv):Over 溢出标志位DF
12、(dn/up):Direction 方向 标志位IF(ei/di):Enable 允许中断标志位SF(ng/pl):Symbol 符号 标志位ZF(zr/nz):Zero 零标志位AF(ac/na):Auxiliary 辅助进位标志位PF(pe/po):Parity 奇偶 标志位CF(cy/nc):Carry 进位标志位溢出OV(溢出)NV(未溢出)零位ZF(等于零)NZ(不等于零)方向DN(减少)UP(增加)辅助进位AC(进位)NA(无进位)中断EI(许可)DI(禁止)奇偶标志PE(偶)PO(奇)符号NG(负)PL(正)进位 CY(进位)NC(无进位)名师资料总结-精品资料欢迎下载-名师精心
13、整理-第 5 页,共 20 页 -6 实 验 二数 据 的 建 立 与 传 送 程 序一、实验目的1.熟悉 IBM PC 机的基本指令。2.继续熟悉计算机键盘及各功能键(参阅DOS 操作手册)。3.继续学习 DEBUG 命令。4.验证指令的功能。二、实验原理在 DEBUG 状态下,分别输入下面各程序段,每输入完一个程序段,用 G 命令进行连续方式执行程序,在连续执行时,要记录程序的执行结果。参考程序:1.在内存 10000H 单元开始,建立00H0FH00H 31 个数,要求00H 0FH 数据逐渐增大,0FH 00H 逐渐减小。该程序从内存CS:0100H 地址开始输入。MOV AX,100
14、0H MOV DS,AX MOV SI,0 MOV CL,0FH XOR AX,AX PPE1:MOV SI,AL INC SI INC AL DEC CL JNZ PPE1 MOV CX,10H PPE2:MOV SI,AL INC SI DEC AL LOOP PPE2 INT 20H 注:转段指令的符号地址直接用绝对偏移地址,该地址在用A 命令汇编输入时,可以看到程序全部运行完之后,可用DEBUG 的 Dump 命令查看建立的数据块内容。例如:名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 20 页 -7 D1000:00 1E 2.把上一个程序的执行结果(建立的 31 个
15、字节数据块,其首地址在10000H),分几种方式传送到以下指定的区域。(a)该程序从内存CS:0150H 开始输入。把数据块传送到15050H 开始的存贮区域中。MOV AX,1000H MOV DS,AX MOV SI,0 MOV DI,5050H MOV CX,1FH;数据块长度是31 PPEA:MOV AL,SI MOV DI,AL INC SI INC DI LOOP PPEA INT 20H 检查内存数据块的传送情况,可用“D”命令。(b)用串传送指令MOVSB,把数据块传送到15150H 开始的区域,该程序从内存CS:0200H 开始输入。检查程序最后的执行结果,可用“D”命令,例
16、如:D1000:5150(c)用重复串操作指令“REP MOVSB”把数据块传送到15250H 开始的区域。该程序从 CS:250H 地址开始输入。检查程序的最后执行结果时,可用:D1000:5250H(d)用串操作的减量工作方式,把数据块传送到25050H 开始的区域。该程序从CS:0300H 开始输入。检查程序的最后执行结果,用D 命令:D2000:5050三、实验仪器1.IBM PC 微机或兼容机一套。名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 20 页 -8 2.准备一张已格式化过的用户软盘(空盘),用于存放你的程序。四、实验步骤参照实验一的步骤,按照本实验程序的内容
17、,分别输入各段程序,并单步和连续执行程序,记录每条指令的执行结果和每个程序段的最后结果。在作单步操作或用G 命令设段点操作时,在暂停处,可以检查所有寄存器和有关内存单元的内容,这不会影响程序的继续执行。若想把源数据块重新换一批数据,可以用DEBUG 的 Fill 命令填充新的数据。例如:F1000:00 L1F 33从 1000:0000H 开始的 31 个字节被替换成33H。五、实验预习要求1.继续阅读PC 微机 DOS 操作手册有关命令说明。2.认真阅读DEBUG 调试程序的命令说明。3.仔细阅读本实验给出的各程序段。4.写出每个程序段的结果数据(分析结果),并说明结果所在的位置(寄存器或
18、存贮器)。六、实验报告要求1.整理每个程序段在实验时的记录内容。2.比较每个程序段的特点。3.分析本次实验出现的问题,找出问题所在。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 20 页 -9 实验三分 支 程 序 设 计一、实验目的练习分支程序的编写方法。练习汇编语言程序的上机过程。二、实验原理通过分支程序设计调试和运行,进一步熟悉掌握汇编程序执行的软件环境。通过分支程序的执行过程,熟悉EDIT 的使用,建立 OBJ文件 EXE 文件的方法。三、实验仪器IBM PC 微机或兼容机一套。准备一张已格式化过的用户软盘(空盘),用于存放你的程序。四、实验内容由流程图写出汇编源程序N
19、 A=0?Y五、实验报告要求1该源程序在DEBUG 和 EDIT 两种状态下运行。2.实验报告中要有源程序和执行结果。3.学校印刷的标准报告纸写实验报告。B 1 B1 B0 A0 开始y N 结束名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 20 页 -10 实验四统 计 学 生 成 绩 程 序一、实验目的进一步掌握分支程序和循环程序的编写方法。二、实验原理设有 10 个学生的成绩分别为56、69、84、82、73、88、99、63、100 和 80 分。试编制程序分别统计低于60 分、6069 分、7079 分、80 89 分、90 99 分及 100 分的人数存放到s5、s
20、6、s7、s8、s9 及 s10 单元中。这一题目的算法很简单,成绩分等部分采用分支结构,统计所有成绩则用循环结构完成。程序框图如下图所示。三、实验仪器1.IBM PC 微机或兼容机一套。2.准备一张已格式化过的用户软盘(空盘),用于存放你的程序。名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 20 页 -11 开始初始化计数单元初始化循环计数值初始化首地址取一个成绩Y 60?N Y 70?N Y 80?N Y 90?N N=100?Y 修 改 地 址N 循环结束?Y 结束程 序 框 图四、实验步骤输入编写的源程序,进行调试。S10+1 S9+1 S8+1 S7+1S6+1S5
21、+1 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 20 页 -12 参考程序如下:;PROGRAM TITLE GOES HERE result;*datarea segment;define data segment grade dw 56,69,84,82,73,88,99,63,100,80 s5 dw 0 s6 dw 0 s7 dw 0 s8 dw 0 s9 dw 0 s10 dw 0 datarea ends;*prognam segment;define code segment;-main proc far;main part of program assum
22、e cs:prognam,ds:datarea start:;starting execution address;set up stack for return push ds;save old data segment sub ax,ax;put zero in AX push ax;save it on stack;set DS register to current data segment mov ax,datarea;datarea segment addr mov ds,ax;into DS register;MAIN PART OF PROGRAM GOES HERE mov
23、s5,0;initialize counter mov s6,0 mov s7,0 mov s8,0 mov s9,0 mov s10,0 mov cx,10;initialize loop count value mov bx,offset grade;initialize first addr 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 20 页 -13 compare:mov ax,bx;get a result cmp ax,60;60?jl five cmp ax,70;70?jl six cmp ax,80;80?jl seven cmp ax,90;90?jl
24、 eight cmp ax,100;=100?jne nine inc s10 jmp short change-addr nine:inc s9 jmp short change-addr eight:inc s8 jmp short change-addr seven:inc s7 jmp short change-addr six:inc s6 jmp short change-addr five:inc s5 change-addr:add bx,2 loop compare ret;return to DOS main endp;end of main part of program
25、;-prognam ends;*end start;end assembly五、实验要求名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 20 页 -14 1读懂所给的程序。2编写程序将存放于S5、S6、S7、S8、S9 及 S10 单元中的数据在屏幕上显示出来。实验五学 生 成 绩 名 次 表 实 验一、实验目的进一步熟悉排序方法。二、实验原理将 0100 之间的 10 个成绩存入首址为1000H 的单元中。1000H+i 表示学号为i 的学生成绩,编写程序能在2000H 开始的区域排出名次表。2000H+i 为学号 i 的学生的名次。参考主程序:入口段寄存器和堆栈初始化显示“
26、请输入10 个学生的成绩”SI 指向成绩表首址学生数送CX 调 GETNUM,读学生成绩送 SI 中SI 加 1 指向下一单元CX 减 1 为 0?N Y 学生数送CX DI 指向名次表首址计算名次填入DX 学号对应的名次表单元CX 减 1 为 0?调 SCAN 子程序,扫描成绩表名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 20 页 -15 N N Y调 DISP1,显示排定的学生名次程序 SCAN:CX 入栈保存学生数送CX AL 中放最低成绩00H BX 和 SI 均指向成绩表首址ALSI?Y N SI送 AL 中,DX 记录对应学号SI 加 1 指向下一单元N CX
27、减 1 为 0?Y 将本次扫描成绩最高者清0 CX 出栈返 回三、实验仪器1.IBM PC 微机或兼容机一套。2.准备一张已格式化过的用户软盘(空盘),用于存放你的程序。返回 DOS 入口名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 20 页 -16 四、实验步骤输入编写的实验程序,进行调试。参考程序:CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H ENDM DATASEGMENTSTUNUM EQU 10 MESS DB,INPUT 30 STUDENTS SCORE:?,0DH,
28、0AH,?$?ERROR DB,INPUT ERROR!?,0DH,0AH,?$?ORG 1000H SCORE DB 30 DUP(?)ORG 2000H SEQU DB 30 DUP(?)DATAENDS STACK SEGMENT STADW 32 DUP(?)TOP DW?STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DA TA,SS:STACK START:MOV AX,DA TA MOV DS,AX MOV ES,AX MOV SP,TOP;初始化名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 20 页 -17
29、MOV AH,09H MOV DX,OFFSET MESS INT 21H;显示提示信息MOV SI,OFFSET SCORE;成绩表首址MOV CX,STUNUM;学生数送CX UUU:CALL GETNUM;读取键入数值送DX MOV SI,DL;存入成绩表缓冲区INC SI;指向下一单元LOOP UUU MOV CX,STUNUM;学生数MOV DI,OFFSET SEQU;名次表首址VVV:CALL SCAN;扫描子程序MOV AL,STUNUM;学生数SUB AL,CL INC AL;计算名次MOV BX,DX MOV DI+BX,AL;记 DX 学号对应名次LOOP VVV MOV
30、 CX,STUNUM;学生数MOV SI,OFFSET SEQU;名次表首址WWW:MOV AL,SI CALL DISP1 CRLF INC SI LOOP WWW;显示排定的学生名次MOV AX,4C00H INT 21H SCAN PROC NEAR;子程序,每扫描一遍成绩表缓冲区,找出其中成绩最高者由DX 指针指示对应学生之后将该成绩清除,以便下一次扫描名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 20 页 -18 PUSH CX MOV CX,STUNUM;学生数MOV AL,00H;最低成绩MOV BX,OFFSET SCORE MOV SI,BX;指向成绩表首址
31、CCC:CMP AL,SI JAE JJJ;AL中的成绩不低于成绩表指针SI所指单元的成绩则转JJJ MOV AL,SI;AL 存放较高的成绩MOV DX,SI SUB DX,BX;DX 为对应学号JJJ:INC SI;指向下一单元LOOP CCC ADD BX,DX MOV BYTE PTRBX,00H;本次扫描成绩最高者清0 POPCX RET SCAN ENDP DISP1 PROC NEAR PUSH CX MOV BL,AL MOV DL,BL MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DI
32、SPL POPCX 名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 20 页 -19 RET DISP1 ENDP DISPL PROC NEAR ADD DL,30H CMP DL,3AH JB DDD ADD DL,27H DDD:MOV AH,02H INT 21H RET DISPL ENDP;参见数值显示程序清单GETNUM PROC NEAR PUSH CX XOR DX,DX GGG:MOV AH,01H INT 21H CMP AL,0DH JZ PPP CMP AL,20H JZ PPP SUB AL,30H JB KKK CMP AL,0AH JB GETS
33、 CMP AL,11H JB KKK SUB AL,07H CMP AL,0FH JBE GETS CMP AL,2AH 名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 20 页 -20 JB KKK CMP AL,2FH JAKKK SUB AL,20H GETS:MOV CL,04 SHL DX,CL XOR AH,AH ADD DX,AX JMP GGG KKK:MOV AH,09H MOV DX,OFFSET ERROR INT 21H PPP:PUSH DX CRLF POPDX POPCX RET GETNUM ENDP;参见字符匹配实验程序清单CODE ENDS END START 五、实验要求1读懂实验程序。2分析实验结果。3写出标准实验报告。名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 20 页 -