ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:36.85KB ,
资源ID:6345449      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6345449.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机软件实验习题与答案完整版.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机软件实验习题与答案完整版.docx

1、微机软件实验习题与答案完整版微机原理软件实验实验1两个多位十进制数相加的实验实验内容:将两个多位十进制数相加,要求加数和被加数均以 ASCII码形式各 自顺序存放以DATA1和DATA必首的5个内存单元中(低位在前),结果送回 DATA攸t。完整代码如下:DATAS SEGMENT;此处输入数据段代码STRING1 DB input the first number: ,$STRING2 DB 13,10,nput the second number: ,$STRING3 DB 13,10the output is: ,$DATA1 DB 6 DUP(00H),$DATA2 DB 6 DUP(

2、00H)$DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码LEA SI,DATA1LEA DI,DATA2L0:LEA DX,STRING1;打印字符申 STRING1MOV AH,09INT 21HINPUT1:;输入第一个数MOV AH,01;输入字符至AL中INT 21HCMP AL,/JE L1MOV SI,ALJMP INPUT1L1:LEA DX,STRING2;打印字符申 STRING2MOV AH

3、,09INT 21HINPUT2: ;输入第二个数MOV AH,01;输入字符至ALINT 21HCMP AL,/JE L2MOV DI,ALINC DIJMP INPUT2L2:MOV SI,0CLC;活空进位标志位CFPLUSE:;相加 ;SUB DATA1SI,30H;SUB DATA2SI,30H;这里不能使用这两条指令,因为如果DATA15=00H,00H-30H需要借位相减,使CF=1MOV AL,DATA1SIADC AL,DATA2SIAAA ;加法调整指令,可使两个ASCIB直接相加MOV DATA1SI,AL ;和赋给 DATA1SIINC SILOOP PLUSEL3:L

4、EA DX,STRING3;打印字符申 STRING3MOV AH,09INT 21HMOV CX,6MOV SI,6SHOW:DEC SICMP DATA1SI,00HJE SHOWSHOW2:MOV DL,DATA1SIADD DL,30HMOV AH,02INT 21HCMP SI,0JE L4DEC SIJMP SHOW2L4: MOV AH,4CHINT 21HCODES ENDSEND START运行结果如下:输入为低位在前,即输入 1234和99999相加实际上是4321和 99999 相加(即:4321+99999=1043200.g DCsOa sr *4 Zpu ipeA.

5、 WDU Wk Ffsk*InpittSe first iiiiiihr:lZ34/ input Lht?少忒烦id immber thf? nutput i s I WIKAririsss 的 cy to continue实验2两个数相乘的实验(无符号数相乘)实验内容:实现十进制数的乘法。要求被乘数和乘数均以 ASCII码形式各自顺序存放在内存中,乘积在屏幕上显示出来。完整代码如下:DATAS SEGMENT;此处输入数据段代码STRING1 DB the output is: ,$DATA1 DB 31H,32H,33HDATA2 DB 35H,36HDATAS ENDS;此处输入堆栈段代

6、码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV DL,10MOV AL,DATA10 ;AL=31HSUB AL,30H ;AL=01HMUL DL;乘 10 ;AL=10ADD AL,DATA11;AL=10 +32HSUB AL,30H ;AL=10 +32H-30H=12MUL DL ;AL=120ADD AL,DATA12 ;AL=120+33HSUB AL,30H;AL=120+33H-30H=123JMOV AL,DATA20 ;A

7、L=35HSUB AL,30H ;AL=5MUL DL;乘 10 ;AL=50ADD AL,DATA21 ;AL=50+36HSUB AL,30H ;AL=50+36H-30H=56MUL BL ;AX=123x56=6888SUB DX,DX;DX 活零MOV BX,1000DIV BX;(DX,AX)/1000,商6在AX 中,余数 888在DX中PUSH DXMOV DL,ALADD DL,30HMOV AH,02 ;打印最高位6INT 21HPOP DXMOV AX,DX;888赋给 AXDIV BL;AX/100,商放在AL中,余数88放在AH中MOV DL,ALMOV CL,AH

8、;! ! !这里千万不能把AH直接赋给AL,因为经过INT 21H指令后AL,AH会改变ADD DL,30HMOV AH,02打印第二位INT 21HMOV BL,10MOV AL,CLSUB AH,AH滞空 AHDIV BL;AX/10,商放在AL中,余数8放在AH中MOV DL,ALMOV CL,AHADD DL,30HMOV AH,02打印第三位INT 21HMOV DL,CLADD DL,30HMOV AH,02打印第四位INT 21HCODES ENDSEND START实验3字符串匹配实验match” ,实验内容:编写程序实现两个字符申比较。如果相同,则屏幕显示否则屏幕显示” no

9、match” ,完整代码如下:DATAS SEGMENT;此处输入数据段代码PRINT1 DB input the first string: ,$PRINT2 DB 13,10input the second string: ,$PRINT3 DB match ,$PRINT4 DB nomatch ,$PRINT5 DB 13,10output: ,$STRING1 DB 30 DUP(00H),13,10$STRING2 DB 30 DUP(00H),13,10$DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUM

10、E CS:CODES,DS:DATAS,SS:STACKS,ES:DATASSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码LEA DX,PRINT1;打印字符申 PRINT1MOV AH,09INT 21HLEA SI,STRING1;STRING1 地址赋给 SILEA DI,STRING2;STRING2地址赋给 DIINPUT1:MOV AH,01;输入字符至ALINT 21HCMP AL,/;输入字符申以/结束,转L0JE L0MOV SI,ALINC SIJMP INPUT1L0:LEA DX,PRINT2 ;打印字符申 PRINT2MOV AH,09IN

11、T 21HMOV AH,01;输入字符至ALINT 21HCMP AL,/JE L1MOV DI,ALINC DIJMP INPUT2L1: MOV CX,30 ;CX=30代表比较 30次MOV SI,00HCOMPARE:;字符申一个一个比较MOV AL,STRING1SI;取STRING1存储单位中的第SI个字符赋给ALCMP AL,STRING2SI ;AL与STRING2存储单位中的第SI个字符比较JNE NOMATCHINC SILOOP COMPAREJMP MATCHLEA DX,PRINT5MOV AH,09INT 21HLEA DX,PRINT4MOV AH,09INT 2

12、1HJMP L2MATCH:;打印 output:matchLEA DX,PRINT5MOV AH,09INT 21HLEA DX,PRINT3MOV AH,09INT 21HL2: MOV AH,4CHINT 21HCODES ENDSEND START运行结果:UQS-dx 0.J4, Cpj 4peed eye岫;rureekip CJr PregifJm EWTLMinput tlic F irst string asdf/ input the second string:asdfz output: FKltchPrt欢 diiy kfcfy tu圈 UOiBoK 0./4 Cpu 部

13、wdt 3000 cycles Framskp 0, Pragraunc DWltMPinput the f ipst stririgasdf/input 七he second str in(|f:asdf azoutput; iMiftMtchPres4i ary key to uonliitie实验4从键盘输入数据并显示的实验实验内容:将键盘输入的2位十六进制数转换为等值的二进制数,并在屏幕上显示。歹0如:键入f2,则显示11110010.完整代码如下:DATAS SEGMENT;此处输入数据段代码STRING1 DB please input a string: ,$STRING2 DB

14、 13,10the output is: ,$STRING3 DB 13,10,nput error ,13,10$DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码L0: LEA DX,STRING1;打印字符申 STRING1MOV AH,09INT 21HMOV AH,01;输入第一个字符至AL中INT 21HCMP AL, 0JB ERROR1CMP AL,9JBE ENTER1C

15、MP AL, AJB ERROR1CMP AL, FJBE ENTER1CMP AL, aJB ERROR1CMP AL, fJBE ENTER1ERROR1:LEA DX,STRING3;打印字符申 STRING3MOV AH,09INT 21HJMP L0ENTER1:CALL ASC2BCD ;把ASCI码转化成十进制数BCD码MOV CL,4ROL AL,CLMOV BL,AL ;把高四位放到BL寄存器中;输入第二个字符MOV AH,01;输入第二个字符至AL中INT 21HCMP AL, 0JB ERROR1CMP AL, 9JBE ENTER2CMP AL,AJB ERROR1CM

16、P AL, FJBE ENTER2CMP AL, aJB ERROR1CMP AL, fJBE ENTER2ENTER2:CALL ASC2BCD ;把ASCI码转化成十进制数BCD码ADD BL,ALLEA DX,STRING2;打印字符申 STRING2MOV AH,09INT 21HMOV CX,9CLC滞空标志位SHOW: ;显示BL中的二进制数DEC CXJE NEXT ;输出完八位之后返回DOSROL BL,1 ;循环左移一位,若溢出为1,则CF=1JC M1JMP M2M1: MOV DL,1 ;若CF=1,转至 M1 丁印 1MOV AH,02INT 21HJMP SHOWM2

17、: MOV DL,0 ;若CF=0,转至 M1 打印 0MOV AH,02INT 21HJMP SHOWNEXT:MOV AH,4CHINT 21HASC2BCD PROCJBE L1 ;若AL 每,转 L1SUB AL,07H ;若输入的数为AF,或者af,则减乙A接在39H后面,AF=3AH3FH,a 仁5AH5FHL1: SUB AL,30H ;减 30HAND AL,0FH ;滤除高位,保留低位,因为af恰好比AF大20H,这样af就和AF的数值一样了RETASC2BCD ENDPCODES ENDSEND START输出结果为:(若输出不在09, AF,af内,则重新输入)DOJju

18、ok Cpu speed 300C cyH” fra me skip Dr Program; DWTLMfljjiikJLi1 血 strdiig;至 lii|jut errurplease Input a strlnq:dsinput errorplease input a strinqi3pinput errorplease input o string;IN the output JR: Il 11 rtf)Piemr any key tu cuntiume实验内容:先在屏幕上显示“input string, ”,输入字符申;再显示“result=如为09的数字,则计数器加1,如为非数字

19、,则直接显示,但不计数。完整代码如下:DATAS SEGMENT;此处输入数据段代码STRING1 DB input string: ,$STRING2 DB 13,10result= ,$STRING3 DB 13,10zifu: ,$DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码LEA DX,STRING1;打印字符申1MOV AH,09INT 21HMOV CX,0MOV BX,

20、0INPUT:MOV AH,01;输入字符至ALINT 21HCMP AL,/ ;输入/ 后转L0JE L0CMP AL, 0 ;下溢出转 RUZHANJB RUZHANCMP AL, 9 ;上溢出转 RUZHANJA RUZHANINC CL ;若为数字则计数器+1JMP INPUTRUZHAN:;非数字字符入栈PUSH AXADD BL,1 ;BL代表入栈的字符个数,方便待会输出JMP INPUTL0:LEA DX,STRING3;打印字符申3MOV AH,09INT 21HCHUZHAN:POP AXMOV DX,AXMOV AH,02INT 21HSUB BL,1CMP BL,0 ;入

21、了多少个栈,出多少栈JNE CHUZHANOUTPUT:;输出数字的个数LEA DX,STRING2;打印字符申2INT 21HMOV DL,CLADD DL,30HMOV AH,02INT 21HMOV AH,4CHINT 21HCODES ENDSEND START输出结果为:(这里非数字字符输出顺序与输入顺序相反)DO&Bn0.74rQu 3000 Frametbp 0r Programs DW1K11in pit str img : asdlnZ3k4jlzHi tuL i jklidxfljr mi 11-5dniy krij to coni hmer实验6改变年月日的实验实验内容:

22、先在屏幕上显示“ what is the date(mm/dd/yy)? 从键盘输入的月日年能把计算机的系统日期改为你键入的值。完整代码如下:DATAS SEGMENTS1DB 0AH,0DH,what is the date(mm/dd/yy)?: ,$DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV DX,OFFSET S1MOV AH,09H;打印字符申what is the date(mm/dd/yy)?:INT

23、 21HMOV DX,0H;DX=CH=0KAISHI:MOV CL,0;用来压缩移位SHURU:MOV AH,01H;输入字符存入AL中INT 21HMOV AH,0AH;10武给 AHCMP AL,0DH ;AL=13则结束,设置日期JE GENGGAICMP AL,/;计算来判断是年,月,日JE ZIZENGAND AL,0FHCMP CH,0;等丁 0则转月JE YUECMP CH,1;等丁 1则转日JE RICMP CH,2;等丁 2则转年JE NIANZIZENG: INC CHJMP SHURU ;无条件转移至SHURUYUE:ADD DH,ALCMP CL,0JNZ KAISH

24、IINC CLMOV AL,DHMUL AHMOV DH,ALJMP SHURU ;无条件转移至SHURURI:ADD DL,ALCMP CL,0JNZ KAISHIINC CLMOV AL,DLMUL AHMOV DL,ALJMP SHURU ;无条件转移至SHURUNIAN:CMP CL,0JNZ XIABUADD BL,ALMOV CL,03H;3 赋给 CLJMP SHURU ;无条件转移至SHURUXIABU:MOV AH,0滞空 AHMOV SI,BX;SI=BXSHL BX,CL;BX左移三位,乘以8SHL SI,1SI左移一位,乘以2ADD BX,SI;两个相加,即乘以10AD

25、D BX,AX;BX加上新输入的数字JMP SHURUGENGGAI:MOV AH,2BH;设置日期INT 21HMOV AH,4CHINT 21HCODES ENDSEND START否则可能计算输出结果为:(设置2008年12月3日,注意如果要设置好系统, 机的日期改变不了)圈 DDSBox 3.74, Cpu 申5000 Firdrrf 扫 0. PrLgramc DWTFMPiht is the daiteCim/dirtyy B?: lZ/GB/i9(J0HPress 两叫 key to cant inue实验7将小写字母转换为大写字母的实验实验内容:接收键入字符(以Ctrl-c为结

26、束),将小写字母变为大写字母,并在屏幕上显示。完整代码如下:DATAS SEGMENT;此处输入数据段代码STRING1 DB 13,10please input a string: ,$STRING2 DB 13,10,the output string is: ,$DATA DB 100DUP(00H),$DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码M: LEA SI,DATAL

27、EA DX,STRING1;打印字符申1MOV AH,09INT 21HINPUT:MOV AH,01;输入字符CINT 21HCMP AL,03HJE OUTPUTCMP AL, aJB MCMP AL, zJA MSUB AL,20H ;减 20H 变小写MOV SI,ALINC SIJMP INPUTOUTPUT:LEA DX,STRING2;打印字符申2LEA SI,DATAL1:MOV DL,SICMP DL,00HJE ENDINGMOV AH,02INT 21HINC SIJMP L1ENDING:MOV AH,4CHINT 21HCODES ENDSEND START运行结果为

28、:(如果输入的不在af中,则重新输入)DOSBcx 0-4, Cpu sprees: 100G uyHf. Fraincskip 0, Progr占E: DV/ltMPuLease input a stringJ| Ltiixe i rip it fl Kir 0 mg :F pledx已 input a 零trMiqxdf切 please input a strhig:Isbglsdfsaisq* the oirtput strin(f isLSHSLSJ3DF5ASGPress any key to ccmtLnue_实验8排序实验(09)实验内容:从首地址为1000H开始存放10个数,将这些数按降序排列完整代码如下:DATAS SEGMENT;此处输入数据段代码STRING1 DB please input 10 numbers: ,$STRING2 DB 13,10,the sorted numbers are: ,$ORG 1000HDATA DB 10DUP(00H),$DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATAS

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

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