汇编语言上机实验指导书Word文件下载.docx

上传人:b****5 文档编号:19638574 上传时间:2023-01-08 格式:DOCX 页数:28 大小:30.55KB
下载 相关 举报
汇编语言上机实验指导书Word文件下载.docx_第1页
第1页 / 共28页
汇编语言上机实验指导书Word文件下载.docx_第2页
第2页 / 共28页
汇编语言上机实验指导书Word文件下载.docx_第3页
第3页 / 共28页
汇编语言上机实验指导书Word文件下载.docx_第4页
第4页 / 共28页
汇编语言上机实验指导书Word文件下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

汇编语言上机实验指导书Word文件下载.docx

《汇编语言上机实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编语言上机实验指导书Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。

汇编语言上机实验指导书Word文件下载.docx

实验准备

仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。

作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。

阅读将AX左移9位的程序段。

4. 

实验步骤

在DOS提示符下,进入DEBUG程序。

在DOS目录下启动DEBUG。

详细记录每一步所用的命令,以及查看结果的方法和具体结果。

5. 

实验报告要求

如何启动和退出DEBUG程序。

整理每个DEBUG命令使用的方法,实际示例及执行结果。

启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?

实验二分支程序实验(必做)

掌握分支程序的设计方法

掌握利用DEBUG修改参数、检查结果的方法。

掌握汇编语言源程序的编辑、汇编、连接及调试过程。

编写一个程序,显示AL寄存器中的两位十六进制数

编写一个程序,判别键盘上输入的字符;

若是1-9字符,则显示之;

若为A-Z或a-z字符,均显示“c”;

若是回车字符<

CR>

(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

编写实验内容要求的两个程序。

写出调试以上程序,即修改程序参数,检查结果的操作方法。

熟悉源程序汇编、连接命令的使用方法即要回答的内容。

用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。

对其进行汇编及连接,产生.EXE文件。

对.EXE文件进行调试运行。

a. 

用DEBUG调试运行,学会修改AL内容的方法。

b. 

对DSPKEY.EXE键入不同的字符,分别进行调试。

c. 

在MS-DOS下运行这两个.EXE文件。

画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

说明本实验是如何利用DEBUG进行调试的。

6. 

参考程序清单

显示AL中两位十六进制数程序:

DISPHEX.ASM

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAL,3EH

MOVBL,AL

MOVDL,AL

MOVCL,4

SHRDL,CL

CMPDL,9

JBENEXT1

ADDDL,7

NEXT1:

ADDDL,30H

MOVAH,2

INT21H;

显示高位ASCII码

MOVDL,BL

ANDDL,0FH

JBENEXT2

NEXT2:

显示低位ASCII码

MOVAH,4CH

INT21H

CODEENDS;

返回DOS

ENDSTART

显示键入字符程序

;

DISPKEY.ASM

CODESEGEMENT

MOVAH,1

等待键入字符,送AL

CMPAL,0DH;

是否是回车符?

JZDONE;

是则转DONE退出程序

CMPAL,’0’

JBNEXT

CMPAL,’9’

JACHARUP

JMPSTART

CHARUP:

CMPAL,41H

CMPAL,5AH

JACHRDN

DISPC:

MOVDL,’C’

NEXT:

CHRDN:

CMPAL,61H

CMPAL,7AH

JANEXT

JMPDISPC

DONE:

CODE:

ENDS

实验三循环程序实验(必做)

掌握循环程序的设计方法

进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。

学会针对不同的问题,选用不同的组织循环的方法。

说明本实验是如何利用DEBUG进行调试的

实验四子程序实验

(一)(必做)

本实验的目的在于让读者掌握同一模块调用的方法。

1. 

实验目的

掌握主程序与子程序之间的调用关系及调用方法。

掌握子程序调用过程中近程调用与远程调用的区别。

掌握通过堆栈转送参数的方法。

2. 

将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。

要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示.

编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数).

3. 

实验说明

第一个实验程序用子程序的近程调用实现。

由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。

实验过程中可以从堆栈的内容看到两个子程序的返回地址值。

由于是近调用,地址值只包括返回地址的段内偏移量。

在每个子程序的执行中,检查CS值是不变的。

第二个程序是利用远调用的方法调用子程序的。

在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。

子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。

第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。

一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。

有关该方法的原理此处不再介绍。

4. 

预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图。

熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。

5. 

编辑、汇编两个源程序,生成相应的可执行文件(。

EXE)

用DEBUG的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。

特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。

检查程序执行的结果是否正确。

6. 

实验报告要求

分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。

说明用堆栈传送参数的过程及其具体方法。

分析实验结果及所遇到问题,并说明解决的方法。

7.参考程序清单

(1)码型转换程序清单:

CONV.ASN

DATASEGMENT

BUFDB0ABH,0CDH,0DEH,01H,02H,03H

DB3AH,4BH,5CH,6FH

DATAENDS

CODE,DS:

DATA

MOVAX,DATA

MOVDS,AX

MOVCX,10

LEABX,BUF

AGAIN:

MOVAL,[BX]

CALLHEXASC

INCBX

LOOPAGAIN

HEXASCPROCNEAR

MOVDL,AL

PUSHCX

MOVCL,4

SHRDL,CL

POPCX

CALLDISP;

显示高位HEX数

ANDDL,0FH

CALLDISP

RET

HEXASCENDP

DISPPROP

JBENEXT

显示

RET

DISPENDP

CODEENDS

(2)统计并显示某键入字符的个数的程序:

:

COUNTER.ASM

CHARDB‘b’

BUFDB50H,?

50HDUP(?

DATAENDS

MCODESEGMENT

MCODE,DS:

DATA

LEADX,BUF

MOVAH,0ah

]INT21H

LEASIBUF

MOVCL,[SI+1]

MOVCH,0;

CX中为字符串长度

INCSI

INCSI;

SI指向串首址TABLE

MOVAL,CHAR

MOVAH,0;

AX中为待查字符

PUSHSI

PUSHCX

PUSHAX;

参数送堆栈

CALLCHECK

POPAX:

统计个数在AL中

MOVDL,CHAR

ANDDL,0FH

MOVAH,2

显示统计个数

MCODEENDS

SCODESEGMENT

SCODE

CHECKPROCFAR

PUSHBP

MOVBP,SP

MOVSI,[BP+10]

MOVCX,[BP+8]

MOVAX,[BP+6]

XORAH,AH

CMPAL.[SI]

JNENEXT1

INCAH

INCSI

MOVAL,AH

MOV[BP+10],AX

POPBP

RET4

CHECKENDP

实验五 

子程序实验

(二)(选做)

本程序的目的在于使读者掌握模块间调用子程序的编写方法.

1.实验目的

了解多模块程序设计方法.

学会使用PUBLEC和EXTRN伪指令解决模块间的符号(如变量名,标号等)通信问题.

实验内容

(1)编写一个子程序,将主程序设定的内存中字符串的小写字母转换成大写字母并显示出来.主程序用另一个模块编写.

(2)编写一个子程序,将主程序指定的字符所在的地址返回给主程序,字符串与主程序在同一个模块.

3.实验准备

(1)仔细阅读教材中有关模块间通信的方法及模块程序设计的方法.

(2)弄清伪指令PUBLIC及EXTRN的功能及用法.

4.实验步骤

(1)分别对实验1和实验2的主、子模块进行汇编,在连接时,将它们装配成一个以.EXE为扩展名的可执行文件.观察汇编及连接过程中有无错误.

(2)对.EXE文件进行调试及运行.

(3)将实验1中的原字符串改为由键盘输入,然后由子模块将源串中的小写字母转换为大写字母,并将源串与转换后的两个字串分两行显示出来(设键入字串长度小于80个字符).

5.实验报告要求

(1)对源程序清单,画出相应的程序流程图.

(2)扼要总结多模块程序的特点和编写方法.

6.参考程序清单

转换字符串小写字母为大写字母的程序清单:

EXCHAR.ASM为主模块的文件名

EXCHAR.DNTOUP:

FAR

PUBLIC 

STRING1,STRING2

DATA 

SEGMENT

STRING1 

DB‘THISISABOOK’,‘$’

STRING2 

DB 

80DUP(?

CODE 

ASSUMECS:

CODE,DS:

START 

MOV 

AX,DATA

DS,AX

CALL 

DNTOUP

AH,4CH

INT 

21H

END 

START

DNTOUP。

ASM为子模块的文件名

EXTRN 

STRING1:

BYTE,STRING2:

BYTE

DNTOUP 

PROC 

FAR

BX,0

CYCLE:

AL,STRING1[BX]

CMP 

AL,24H 

是否是STRING1结尾

JZ 

DONE 

是“$”,转DONE

CMP 

AL,61H 

是小写字母么?

JB 

NEXT 

不是转NEXT

AL,7AH

JA 

NEXT

SUB 

AL,20H 

转为大写字母

NEXT:

STRING2[BX],AL

INC 

BX

JMPCYCLE

DONE:

AL。

‘$’

STRING2[BX],AL 

;

不一个$

DL,0DH

AH,2

DL,0AH

21H 

显示回车,换行

LEA 

DX,STRING1

AH,9 

INT 

显示源串内容

DL,OAH

AH,2

回车换行

DX,OFFSETSTRING2

AH,9

显示转换后的大写串

RET

ENDP

END

(2)找指定字符,并返回地址植的程序清单

MAING。

ASM为主模块程序名

FINDC:

STRN

STRN 

DB‘LINKDISPLAYSUBROUTING$’

ADDR 

DW?

START:

MOVAX,DATA

MOVDS,AX

AH,1

FINDC

MOV 

ADDR,DI

FINDC。

ASM为子模块程序名

STRN:

DI,STRN

AGAIN:

CMPBYTE 

PTR[DI],‘$’

DONE

AL,[DI]

JNZ 

DONE1:

DI

JMP 

AGAIN

DI,0FFFFH 

找不到返回0FFFFH

DONE1

FINDC 

(3)如由键盘输入字符串,则可在程序1的主模块DATA段中加一行提示信息IMAGE:

IMAGE 

DB‘INPUTASTRINGPLEASE:

$’然后在主模块的CALL指令前插入以下程序段

DX,IMAGE

DX,STRING2+1

MOVAH,0AH

将键入串存入STRING2

SI,STRING2+2

CL,0

DI,STRING1

AL,[SI]

[DI],AL

SI

MOVBYTEPTR[DI],‘$’ 

补一个$

说明:

此处先将键入字串存入STRING2,然后再将其字串部分传送到STRING1中,当然在定义STRING2时,应为:

80,?

80DUP(?

)。

实验六 

字符处理程序实验(必做)

1.实验目的

(1)熟悉串操作指令的功能与应用

(2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。

2.实验内容

(1)字符串统计。

自STRN开始的存储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。

(2)在给定的字符串中,删除重复的字符,其余的字符向前递补。

3.实验准备

(1)熟悉字符处理的方法和字符处理程序的设计;

(2)认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备好数据。

(3)按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。

4.实验步骤

(1)用1号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。

程序每次执行,都能得到不同的结果。

(2)实验2可参考教材第五章练习10的解法,但要编写一个在同一个字符串

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

当前位置:首页 > 医药卫生 > 基础医学

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

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