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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

计算机原理习题答案.docx

1、计算机原理习题答案计算机原理习题答案部门: xxx 时间: xxx整理范文,仅供参考,可下载自行编辑第四章 80x86汇编语言程序设计习题与答案1、指出以下数据定义伪指令所分配的字节数8086系统)。1)DATA1 DB 10,?,A2)DATA2 DW 10 DUP2,3 DUP?),1)3)DATA3 DB HELLO,WORLD!,$4)DATA4 DW DATA4解:1)3字节; 2)100字节; 3)13字节; 4)2字节。2、指出以下数据定义伪指令所分配的字节数80386系统)。1)DATA1 DF 12,34,562)DATA2 DF DATA23)DATA3 DQ 0,10 D

2、UP?)4)DATA4 DT 0,1,2解:1)18字节; 3)6字节; 3)88字节; 4)30字节。3、指出以下指令中哪些是无效的,并说明原因。1)ADDR DB $2)DATA DB F0H,12H3)1_DATA DW 1234H4)VAR DW VAR1 ;VAR1为一个字节变量5)MOV AX,10-VAR1 ;VAR1为一个字变量6)MOV BX,VAR2*2+1 ;VAR2为一个字变量解:1)非法,地址计数器$是32位数;2)非法,以字母开头的16进制数应在前面加“0”,即应为“0F0H”;3)非法,变量名非法,不能以数字开头;4)合法;5)非法,地址表达式不能是“常数-地址”

3、;6)非法,地址表达式不能出现乘法。4、假设已定义数据段如下:DATA SEGMENTORG 100HDATA1 DB 10 DUP1,2,3)DATA2 DW DATA1,$DATA ENDS且段寄存器DS已初始化为该数据段的段基址假设段基址为1234H)。请指出以下指令执行后,相应的寄存器中的内容。b5E2RGbCAP=?=?=?=?=?=?=?=?解:=0201H; =0100H; =0120H; =011EH;p1EanqFDPw=1234H; =000AH; =0001H; =0002H。DXDiTa9E3d5、在8086系统下,编写完整程序,实现从键盘上输入8位二进制数,从显示器上

4、显示相应的16进制数,例如从键盘上输入“00010010”,应在显示器上显示“12H”。RTCrpUDGiT解:参考程序:DATASEGMENTMSG1DBInput binary number(ESC to exit:,$MSG2DB0AH,0DH,Input error!,0AH,0DH,$DATAENDSOUTPUTMACROASC ;定义输出一个字符的宏MOVDL, ASCMOVAH, 2INT21HENDMCODESEGMENTASSUMECS:CODE, DS:DATAMAINPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXAGAIN:

5、LEADX, MSG1MOVAH, 9INT21H ;提示输入信息MOVCX, 8 ;输入8位二进制数MOVBL, 0L:MOVAH, 1INT21HSHLBL, 1CMPAL, 1BH ;ESC键退出JZDONECMPAL, 0 ;输入“0”JZNEXTCMPAL, 1 ;输入“1”JNZERROR ;输入其他则出错INCBLNEXT:LOOPLOUTPUT0AHOUTPUT0DHPUSHBXMOVCL, 4SHRBL, CLCALLTRAN ;显示高4位对应的16进制数POPBXANDBL, 0FHCALLTRAN ;显示低4位对应的16进制数OUTPUTHOUTPUT0AHOUTPUT0

6、DHJMPAGAINERROR:LEADX, MSG2MOVAH, 9INT21HJMPAGAINDONE:RETMAINENDPTRANPROCFARCMPBL, 0AHJBBELOWADDBL, 7BELOW:ADDBL, 30HOUTPUTBLRETTRANENDPCODEENDSENDMAIN6、在8086系统下,编写完整程序,实现从键盘上输入两个4位十进制数,从显示器上显示这两个数之和,例如输入“1234”、“5678”,应在显示器上显示“6912”。5PCzVD7HxA解:参考程序:DATASEGMENTMSG1DB Input the first number(ESC to ex

7、it:,$MSG2DB Input the second number(ESC to exit:,$MSG3DB0AH,0DH,Input error!Input again:,$DATAENDSOUTPUTMACROASC ;定义输出一个字符的宏MOVDL, ASCMOVAH, 2INT21HENDMCODESEGMENTASSUMECS:CODE, DS:DATAMAIN:MOVAX, DATAMOVDS, AXAGAIN:LEADX, MSG1MOVAH, 9INT21H ;提示输入第一个数CALLINPUT ;输入过程PUSHBXOUTPUT0AHOUTPUT0DHLEADX, MSG

8、2MOVAH, 9INT21H ;提示输入第二个数CALLINPUT ;输入过程OUTPUT0AHOUTPUT0DHPOPAX ;实现两个4位组合BCD码相加ADDAL, BL ;低8位相加DAA ;校正MOVCL, AL ;保存至CLADCAH, BH ;高8位相加MOVAL, AH ;移至ALDAA ;校正MOVAH, ALMOVAL, CLMOVBX, AX ;最后结果放在BX中JNCNEXTOUTPUT 1 ;如果相加结果大于9999,则显示进位“1”NEXT:PUSHBXMOVCL, 4SHRBH, CLADDBH, 30HOUTPUTBH ;显示千位数POPBXPUSHBXANDB

9、H, 0FHADDBH, 30HOUTPUTBH ;显示百位数POPBXPUSHBXMOVCL, 4SHRBL, CLADDBL, 30HOUTPUTBL ;显示十位数POPBXANDBL, 0FHADDBL, 30HOUTPUTBL ;显示个位数OUTPUT0AHOUTPUT0DHJMPAGAININPUTPROCFAR ;输入一个4位十进制数的过程BEGIN:MOVCX, 4MOVBX, 0L:SHLBX, 1SHLBX, 1SHLBX, 1SHLBX, 1 ;BX的值乘以16MOVAH, 1INT21H ;输入CMPAL, 1BH ;ESC键退出JZDONECMPAL, 0JBERROR

10、 ;非数字,出错CMPAL, 9JAERROR ;非数字,出错SUBAL, 30HXORAH, AHADDBX, AX ;将输入加到BX中LOOPLRETERROR:LEADX, MSG3MOVAH, 9INT21HJMPBEGINDONE:MOVAH, 4CHINT21HINPUTENDPCODEENDSENDMAIN7、在8086系统下,编写完整程序,实现两个32位带符号数相乘。假设被乘数存放在以字变量MUL1开始的连续4个字节中,乘数存放在以字变量MUL2开始的连续4个字节中中,相乘结果存放在以字变量RES开始的连续8个字节中。jLBHrnAILg解:参考程序:DATASEGMENTMU

11、L1DW0FFFFH,0FFFFH ;被乘数MUL2DW5678H,1234H ;乘数RESDW4 DUP(0 ;结果DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATAMAINPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXMOVCX, MUL1MOVBP, MUL1+2MOVSI, MUL2MOVDI, MUL2+2TESTBP, 8000H ;被乘数是否为负数JZNEXT1NOTBP ;为负数,则取反加1NOTCXADDCX, 1ADCBP, 0NEXT1:TESTDI, 8000H ;乘数是否为负数JZNEXT

12、2NOTSI ;为负数,则取反加1NOTDIADDSI, 1ADCDI, 0NEXT2:MOVAX, SI ;相乘过程MULCXMOVRES, AXMOVRES+2, DXMOVAX, SIMULBPADDRES+2, AXADCRES+4, DXMOVAX, DIMULCXADDRES+2, AXADCRES+4, DXMOVAX, DIMULBPADDRES+4, AXADCRES+6, DXMOVAX, MUL1+2XORAX, MUL2+2 ;判断被乘数和乘数是否同号JNSDONE ;同号,则结果为正数,无须修改结果NOTRES ;不同号,则结果为负数,须取反加1NOTRES+2NOT

13、RES+4NOTRES+6ADDRES, 1ADCRES+2, 0ADCRES+4, 0ADCRES+6, 0DONE:RETMAINENDPCODEENDSENDMAIN8、在8086系统下,编写完整程序,找出字节数组ARRAY中的最大值和最小值。假设ARRAY的长度为100个字节,每个字节为一个无符号数,程序执行后最大值将存放到字节变量MAX中,最小值则存放到字节变量MIN中。xHAQX74J0X解:参考程序:DATASEGMENTARRAYDB 100 DUP,?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATAMAINPROCFARPUSHDSMOVAX

14、, 0PUSHAXMOVAX, DATAMOVDS, AXMOVES, AXLEASI, ARRAY+99 ;SI指向源串尾LEADI, ARRAY+100 ;DI指向新串尾STD ;DF=1,串尾先移动MOVCX, 100REPMOVSB ;循环移动RETMAINENDPCODEENDSENDMAIN10、在8086系统下,编写在长字符串L_STR中查找短字符串S_STR的完整程序,如果找到匹配的字符串,则将字节变量RES置0FFH,否则置0。例如,在字符串“ABABCD”中可找到字符串“ABC”,则RES=0FFH。dvzfvkwMI1解:参考程序:DATASEGMENTL_STRDBAB

15、DABABCD ;长串L_LTHDW$-L_STR ;长串长度S_STRDB ABC ;短串S_LTHDW$-S_STR ;短串长度RESDB? ;存放结果DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATAMAINPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXMOVES, AXLEASI, L_STRLEADI, S_STRCLDMOVCX, L_LTHSUBCX, S_LTHINCCX ;作串比较的次数AGAIN:CALLCOMP ;进行串比较INCSILOOPAGAINMOVRES, 0RETMAINENDPC

16、OMPPROCFARPUSHCXPUSHSIPUSHDIMOVCX, S_LTHREPZCMPSBJZYES ;如果两个串相同,则说明找到POPDIPOPSIPOPCXRETYES:MOVRES, 0FFHMOVAH, 4CHINT21HCOMPENDPCODEENDSENDMAIN11、在80386系统下,编程实现两个64位无符号数相乘。解:参考程序:.386.MODELSMALL.DATAMUL1DD 3456789AH, 12345678H ;被乘数MUL2DD 789ABCDEH, 3456789AH ;乘数RESDD4 DUP(0 ;存放128位结果,初始化为0.CODEMAIN: MOVAX, DATAMOVDS, AXMOV EAX, MUL2MULMUL1MOVRES, EAXMOVRES+4, EDXMOV EAX, MUL2MULMUL1+4ADDRES+4, EAXADCRES+8, EDXMOV EAX, MUL2+4MULMUL1ADDRES+4, EAXADC RES+8, EDXMOV EAX, MUL2+4MULMUL1+4ADDRES+8, EAXADCRES+12, EDXMOV AH, 4CHINT 21H END MAIN申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。

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

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