汇编上机实验二Word文档格式.docx
- 文档编号:17015944
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:15
- 大小:269.92KB
汇编上机实验二Word文档格式.docx
《汇编上机实验二Word文档格式.docx》由会员分享,可在线阅读,更多相关《汇编上机实验二Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
若为A-Z或a-z字符,均显示“c”;
若是回车字符,则结束程序,若为其它字符则不显示,继续等待新的字符输入。
2、提示编程:
①回车字符的ASCII码为0DH
②显示字符用INT21H的2号调用
B、设计要求
已知DATA单元开始存放三个带符号数
1、判断三个数是否同号,若同时为正,显示“+”,若同时为负,则显示“—”,否则显不“*”。
2、显示三个数中的最小值。
c、设计要求
编写7c号中断的处理程序,使得在除法溢出发生时,在屏幕上输出字符串”201110405313LiLongzhi”,然后返回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;
<
'
...30H
DY0:
数字处理函数
CMPAL,'
9'
因为int2107号功能字符信息存于AL中。
JLEIS_09
CMPAL,'
A'
JGEDY_A;
DAYUA
...41H
DY_A:
Z'
JLEIS_AZ
a'
JGEDY_xA;
DAYUxA
...61H
DY_xA:
z'
JMPNEXT
IS_AZ:
MOVAH,02
MOVDL,'
c'
INT21H
IS_09:
MOVAH,2
MOVDL,AL
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
data_C
mainprocfar
寄存器进栈保护
ax寄存器清零
movax,data_C
movds,ax;
将数据段地址赋值给ds
MOVBX,OFFSETDATA;
将数据段首地址赋值给bx
MOVAL,[BX]
INCBX
MOVAH,[BX]
CMPAL,AH;
将bx值取出并进行判断是否已取完
JLALAL1;
AL<
AH
XCHGAH,AL
ALAL1:
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
+'
JMPDISP_SMALL
QF:
-'
YZYF:
*'
DISP_SMALL:
MOVAL,A3
MOVAH,AL
ANDAX,0F00FH
MOVCL,4
SHRAH,CL
CMPAH,0AH
JGEIS_AZ
ADDAH,30H
MOVD1,AH
JMPNN_1
ADDAH,40H-0AH+1
NN_1:
CMPAL,0AH
JGEIS_AZ1
ADDAL,30H
MOVD2,AL
JMPNN_2
IS_AZ1:
ADDAL,40H-0AH+1
NN_2:
MOVAH,09
MOVDX,OFFSETDISP_MESS
INT21H
ret
c.程序代码:
c.asm:
assumecs:
code
start:
movax,cs
将代码段地址交给ds
movsi,offsetdo0
movax,0
moves,ax
movdi,200h
movcx,offsetdo0end-offsetdo0;
计算输出字符串长度
cld
repmovsb
设置中断向量表
movwordptres:
[7ch*4],200h
[7ch*4+2],0
movax,4c00h
int21h
do0:
jmpshortdo0start
db"
201110405313LiLongzhi"
0;
设置输出字符串
do0start:
pushcx
movax,cs
movds,ax
movsi,202h
movax,0b800h;
指向显存
movdi,12*160+30*2;
使其显示于屏幕中央
show:
movcl,[si]
movch,0
jcxzreturn
moves:
[di],cl
movch,2
[di+1],ch
incsi
adddi,2
jmpshow
return:
popcx
do0end:
nop
endstart
test.asm:
int7ch
d.程序代码:
datasegment
msgdb'
pleaseinputtennumber:
0dh,0ah,'
buferdb10dup(?
)
mimadb7,5,9,1,3,6,8,0,2,4
movax,data
movds,ax
movsi,offsetbufer
movbx,offsetmima
movdx,offsetmsg
movah,09
movcx,10
input:
movah,01
movah,0
andal,0fh
movdi,ax
moval,[bx][di]
mov[si],al
loopinput
movah,4ch
endstart
五、实验总结(程序的优缺点,不足和改进的过程)
这次实验的内容是循环和分支程序设计,我们之前学过了一些转移指令,如jmp指令可以修改CS,IP的值;
jcxz指令为有条件转移指令,当cx=0时转移到标号处执行;
loop指令为循环指令,每循环一次cx=cx-1,cx不为0转移到标号处执行,当cx=0时结束循环。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 上机 实验