资源描述:
《汇编语言实验2-顺序程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、汇编语言实验报告AssemblyLanguageProgrammingLabReports班级:姓名:学号:实验日期:学院:计算机与通信工程学院—专业:计算机科学与技术实验顺序:—实验二—实验名称:顺序程序设计实验分数:考评日期:指导教师:一.实验目的1.掌握非压缩的BCD码运算及其调整办法。2•掌握Dos功能调用int21h的1,2,9,10号功能。3.掌握Bios功能调用int10h的3号功能。二.实验环境操作系统:windowsxp编译程序:masm5.0三.实验原理l.dos功能调用,利用10号dos功能调用,输入一串字符串,利用9号d
2、os功能调用,输岀显示之前输入的字符串代码如下:Ntext-记爭本一□X文件(F)编辑(E)格式(O)«S(V)帮助(H)datasegmentbufferdb40,?,41dup('S')dataendsextrasegmentextraendsstacksegmentdb100dup(0)stackendscodesegmentassumecs:code,ds:data,es:extra,ss:stackstart:movax,datamovDS,AXmovax,extramovES,AXmovax,stackmovSS,AXmovsp,1
3、00movax,segbuffermovDS,AXmovdx,offsetbuffermovah,10int21hmovbuffer[0],ODhmovbuffer[1],OAhmovax,segbuffermovDS,AXmovdx,offsetbuffermovah,9int21hmovah,4chint21hcodeendsendstart2•利用intlOh获得光标的行列号,算出相应在显存的位置,输出想要的字符代码如下:Itext・记事本文件(E)编辑(E)格式(Q)查看Qfl帮助但)datasegmentXDB'lxz'dataend
4、sextrasegmentextraendsstacksegmentstackendscodesegmentassumecs:code,ds:data,es:extra,ss:stackstart:movax,datamovDS,AXmovax,0b800hmovES,AX
5、movAH,3movBH,0int10HmovAL,160mulDHmovAL,xLO]moolDXLmovES:[BX+0],ALmovbyteptrES:[BX+1],4AHmovAL,xEl]movES:[BX+2],ALmovbyteptrES:[BX+3],4AH
6、movAL,xE2]movES:[BX+4],ALmovbyteptrES:[BX+5],4AHmovah,4chint21hcodeendsendstart3.输入是转化由ascii码转成实际十六进制数,mul相乘后,采用非压缩bed码相乘调整aam,高位低位分别采用非进位加法和进位加法,最后转回ascii码输岀代码如下:2ltext■记事本—□X文件(F)编辑(E)格式(0)查看(V)帮助(H)datasegmentDISPLAYDB'Y=2X+3=,,'S'XDB03Hdataendsextrasegmentextraendsstacks
7、egmentdb100dup(O)stackendscodesegmentassumecs:code,ds:data,es:extra,ss:stackstart:movax,datamovDS,AXmovax,extramovES,AXmovax,stackmovSS,AXmovsp,100MOVAH,1int21hADDAL,ALDAAADDAL,XDAAMOVX,ALSUBX,30Hint21hmovAX,segDISPLAYmovDS,AXmovDX,offsetDISPLAYmovAH,9
8、int21hmovDL,XmovAH,2in
9、t21hmovah,4chint21hcodeendsendstart一.实验步骤及结果分析输出_个“helloworld!"1.Dos功能调用。输入一个“Helloworld!vC:>masmtext.asmMicrosoft(R)MacroAssemblerUersion5.00Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.[text.OBJ]:[NUL.LST1:[NUL.CRF1:ObjectfilenameSource1istingCross-reference5
10、1640♦464904Bytessymbo1spacefree0WarningErrors0SevereErrorsC:>1inktext.objM