汇编上机实验二.docx
- 文档编号:10915204
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:16
- 大小:269.85KB
汇编上机实验二.docx
《汇编上机实验二.docx》由会员分享,可在线阅读,更多相关《汇编上机实验二.docx(16页珍藏版)》请在冰豆网上搜索。
汇编上机实验二
昆明理工大学信息工程与自动化学院学生实验报告
(201—201学年第一学期)
课程名称:
汇编与微机接口实验开课实验室:
年月日
年级
学号
姓名
成绩
实验项目名称
实验二循环及分支程序设计
指导教师
教师评语
教师签名:
年月日
一、实验目的:
1、熟悉并且掌握汇编语言的基本指令;
2、熟练地掌握循环与分支程序的设计过程;
3、掌握带符号数的比较转移指令:
JL、JLE、JG、JGE;
4、伪指令EQU及操作符'$'的使用。
5、熟悉并且掌握BIOS和DOS中断的调用方法。
二、实验要求:
A、设计要求
1、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符,则结束程序,若为其它字符则不显示,继续等待新的字符输入。
2、提示编程:
①回车字符的ASCII码为0DH
②显示字符用INT21H的2号调用
B、设计要求
已知DATA单元开始存放三个带符号数
1、判断三个数是否同号,若同时为正,显示“+”,若同时为负,则显示“—”,否则显不“*”。
2、显示三个数中的最小值。
c、设计要求
编写7c号中断的处理程序,使得在除法溢出发生时,在屏幕上输出字符串”2LiLongzhi”,然后返回DOS。
d、设计要求
编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后存入内存缓冲区BUFFER。
加密表为:
输入数字:
0、1、2、3、4、5、6、7、8、9
密码数字:
7,5,9,1,3,6,8,0,2,4
提示:
加密可通过XLAT指令完成。
要求:
键盘输入通过BIOS和DOS中断分别实现。
三、实验环境
汇编程序:
MASM6.15,链接程序:
LINK.EXE,调试环境:
DEBUG.EXE,对操作系统和计算机五特殊要求,如果是WIN7以上操作系统,需要安装DOSBOX虚拟平台。
四、实验内容(算法及运行结果的截图)
先模拟c盘和设置好默认路径,后面程序则可以在该路径下直接编译、链接和运行。
后面文件分别为a.asm、b.asm、c.asm和test.asm、d.asm。
a.程序代码:
datasegment;定义数据段
DB0
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar;定义main函数
pushds;对ds寄存器进栈保护
subax,ax;对ax清零
pushax;对ax寄存器进栈保护
movax,data
movds,ax;将data段地址赋值给ds
next:
movah,07h;调用int21键盘输入(无回显)功能
int21h
cmpal,0dh;回车ascall码为0dh
jEend_d
cmpal,'0';对数字处理
JGEDY0;>=0
JMPNEXT;<'0'...30H
DY0:
;数字处理函数
CMPAL,'9';因为int2107号功能字符信息存于AL中。
JLEIS_09
CMPAL,'A'
JGEDY_A;DAYUA
JMPNEXT;<'A'...41H
DY_A:
CMPAL,'Z'
JLEIS_AZ
CMPAL,'a'
JGEDY_xA;DAYUxA
JMPNEXT;<'a'...61H
DY_xA:
CMPAL,'z'
JLEIS_AZ
JMPNEXT
IS_AZ:
MOVAH,02
MOVDL,'c'
INT21H
JMPNEXT
IS_09:
MOVAH,2
MOVDL,AL
INT21H
JMPNEXT
end_d:
ret;用于调用返回
mainendp
codeends
endmain
程序运行截图:
b.程序代码:
data_Csegment
DATADB5,6,7;编程所用3个数,该处3数值可任意设定
A1DB0
A2DB0
A3DB0
DISP_MESSDB0DH,0AH,'MINIS:
';输出字符串
D1DB0
D2DB0,'H$'
data_Cends
codesegment
assumecs:
code,ds:
data_C
mainprocfar
pushds;寄存器进栈保护
subax,ax;ax寄存器清零
pushax;寄存器进栈保护
movax,data_C
movds,ax;将数据段地址赋值给ds
MOVBX,OFFSETDATA;将数据段首地址赋值给bx
MOVAL,[BX]
INCBX
MOVAH,[BX]
CMPAL,AH;将bx值取出并进行判断是否已取完
JLALAL1;AL XCHGAH,AL ALAL1: INCBX MOVDL,[BX] CMPAL,DL JLALAL XCHGAL,DL ALAL: CMPAH,DL JLAL_SMALL XCHGAH,DL AL_SMALL: MOVA1,DL MOVA2,AH MOVA3,AL XORDL,AL;最大和最小数异或 ANDDL,80H NOTDL TESTDL,80H;高位为1表示一正一负,否则为全负或全正 JEYZYF ANDAL,80H NOTAL TESTAL,80H;高位为1表示全负 JEQF MOVAH,02 MOVDL,'+' INT21H JMPDISP_SMALL QF: MOVAH,02 MOVDL,'-' INT21H JMPDISP_SMALL YZYF: MOVAH,02 MOVDL,'*' INT21H DISP_SMALL: MOVAL,A3 MOVAH,AL ANDAX,0F00FH MOVCL,4 SHRAH,CL CMPAH,0AH JGEIS_AZ ADDAH,30H MOVD1,AH JMPNN_1 IS_AZ: ADDAH,40H-0AH+1 MOVD1,AH NN_1: CMPAL,0AH JGEIS_AZ1 ADDAL,30H MOVD2,AL JMPNN_2 IS_AZ1: ADDAL,40H-0AH+1 MOVD2,AL NN_2: MOVAH,09 MOVDX,OFFSETDISP_MESS INT21H ret mainendp codeends endmain 程序运行截图: c.程序代码: c.asm: assumecs: code codesegment start: movax,cs movds,ax;将代码段地址交给ds movsi,offsetdo0 movax,0 moves,ax movdi,200h movcx,offsetdo0end-offsetdo0;计算输出字符串长度 cld repmovsb ;设置中断向量表 movax,0 moves,ax movwordptres: [7ch*4],200h movwordptres: [7ch*4+2],0 movax,4c00h int21h do0: jmpshortdo0start db"2LiLongzhi",0;设置输出字符串 do0start: pushcx movax,cs movds,ax movsi,202h movax,0b800h;指向显存 moves,ax movdi,12*160+30*2;使其显示于屏幕中央 show: movcl,[si] movch,0 jcxzreturn moves: [di],cl movch,2 moves: [di+1],ch incsi adddi,2 jmpshow return: popcx movax,4c00h int21h do0end: nop codeends endstart test.asm: assumecs: code codesegment start: int7ch movax,4c00h int21h codeends endstart 程序运行截图: d.程序代码: datasegment msgdb'pleaseinputtennumber: ',0dh,0ah,'$' buferdb10dup(? ) mimadb7,5,9,1,3,6,8,0,2,4 dataends codesegment assumecs: code,ds: data start: movax,data movds,ax movsi,offsetbufer movbx,offsetmima movdx,offsetmsg movah,09 int21h movcx,10 input: movah,01 int21h movah,0 andal,0fh movdi,ax moval,[bx][di] mov[si],al incsi loopinput movah,4ch int21h codeends endstart 程序运行截图: 五、实验总结(程序的优缺点,不足和改进的过程) 这次实验的内容是循环和分支程序设计,我们之前学过了一些转移指令,如jmp指令可以修改CS,IP的值;jcxz指令为有条件转移指令,当cx=0时转移到标号处执行;loop指令为循环指令,每循环一次cx=cx-1,cx不为0转移到标号处执行,当cx=0时结束循环。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 上机 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)