欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    微机原理习题3.docx

    • 资源ID:10879206       资源大小:22.11KB        全文页数:26页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理习题3.docx

    1、微机原理习题3习 题 33.1 在以Block为首地址的字节单元中,存放了一个班级的学生考试成绩。试编写一程序,利用学生的序号来查表得到该学生的成绩,设学生的序号在NUMBER单元,查表结果存入RESULT单元。解:DSEG SEGMENT BLOCK DB 67,78,86,57,88,75,78,96,77,88,87,95,67,86,83,55 NUMBER DB 9 ; 要显示的16进制数字 RESULT DB ? ; 存放要显示数字对应的七段码DSEG ENDSCSEG SEGMENT ASSUME CS: CSEG, DS:DSEGSTART :MOV AX, DSEG MOV

    2、DS, AX MOV BX, OFFSET BLOCK MOV AL, NUMBER ; 取16进制数字 AND AL, 0FH XLAT ; 查表取得对应的七段码 MOV RESULT, AL ; 保存 MOV AX, 4C00H INT 21HCSEG ENDS END START3.2 试编程序,统计由52600H开始的100个单元中所存放的字符“A“的个数,并将结果存放在DX中。解:CSEG SEGMENT ASSUME CS: CSEGSTART :MOV AX, 5260H MOV DS, AX MOV BX, 0 MOV AL, A MOV CX,100 MOV DX,0AGA:

    3、CMP AL,BX JNZ LP INC DXLP: INC BX LOOP AGA MOV AX, 4C00H INT 21HCSEG ENDS END START3.3 在当前数据段(DS),偏移地址为GRADE开始的连续80个单元中,存放着某班80个同学某门考试成绩。按要求编写程序:试编写程序统计90分;80分89分;70分79分;60分69分,60分的人数各为多少,并将结果放在同一数据段、偏移地址为LEVEL开始的连续单元中。试编写程序,求该班这门课的平均成绩为多少,并放在该数据段的AVER单元中。解:DATA SEGMENT GRADE DB 80 DUP(?) ;运行前置入具体数据

    4、 LEVEL DB 0 ;大于90 LEVEL1 DB 0 ;80分89分 LEVEL2 DB 0 ;70分79分 LEVEL3 DB 0 ;60分69分 LEVEL4 DB 0 ;60分 AVER DB ?DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA SI, GRADE MOV DX,0 MOV CX, 80 AGAIN: MOV AL, SI CMP AL, 59 ;分段测试 JA L1 L0: INC LEVEL4 JMP NEXT L1: CMP AL, 69 JA

    5、 L2 INC LEVEL3 JMP NEXT L2: CMP AL, 79 JA L3 INC LEVEL2 JMP NEXT L3: CMP AL, 89 JA L4 INC LEVEL1 JMP NEXT L4: INC LEVEL NEXT: ADD SI, 1 ADD DL,AL ;求累加和 ADC DH,0 LOOP AGAIN MOV AX,DX MOV BL,80 DIV BL MOV AVER,ALEXIT: MOV AX, 4C00H INT 21H CODE ENDS END START3.4 在以字节变量ARRAY为首地址的内存区域存储了一组带符号的数据,试编写程序将数

    6、据组的所有正数相加,并将和送入SUM字单元。解:DATA SEGMENTARRAY DB 12,-67,44,67,-35,66,55,-98,87,-87,33,83COUNT EQU $-ARRAYSUM DW ? ;SUM存放累加和DATA ENDSCODE SEGMENT ASSUME DS: DATA, CS: CODESTART: MOV AX, DATA MOV DS, AX MOV BX, 0 ;BX是数组元素在数组内的位移,初值0 MOV CX, COUNT ;装载循环计数器的初始值 MOV DX, 0 ;累加器AX清零ONE: MOV AL,ARRAYBX CMP AL,0

    7、 JLE NEXT CBW ADD DX,AX ;NEXT: INC BX ;修改BX的值,为下一次操作做准备 LOOP ONE ;计数循环 MOV SUM, DX ;保存结果(累加和) MOV AX, 4C00H INT 21HCODE ENDS END START3.5 若某班有50名学生,考汇编语言课程,且所有考生的成绩都已存放自XX单元开始的内存区中,试编写一程序找出最高分和最低分。解:DATA SEGMENT XX DB 50 DUP (?) ;运行前置入具体数据 COUNT EQU $-XX MIN DB ? MAX DB ?DATA ENDSCODE SEGMENT ASSUME

    8、 CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV MIN, 100 ;假设最小的数 MOV MAX, 0 ;假设最大的数 LEA SI, XX MOV CX, COUNTAGAIN: MOV AL, SI CMP AL, MIN JAE SKIP1 MOV MIN, AL ;比预设最小值还小,保留SKIP1: CMP AL, MAX JBE SKIP2 MOV MAX, AL ;比预设最大值还大,保留SKIP2: INC SI LOOP AGAINEXIT: MOV AX, 4C00H INT 21H CODE ENDS END ST

    9、ART3.6 在首地址为ARRAY为首地址的内存区域里,存放了一组带符号的数据,试编写程序分别统计零、正数和负数的个数,统计结果分别存放在ZZ、XX、YY中。解:DATA SEGMENT ARRAY DB 56,-42,66,87,0,88,-88,68,0,-67,58,97,-66,86,77 ;运行前置入具体数据COUNT EQU $-ARRAY XX DB 0 ;正数的个数 YY DB 0 ;0的个数 ZZ DB 0 ;负数的个数DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX

    10、 LEA SI, ARRAY MOV CX, COUNT AGAIN: MOV AL, SI CMP AL, 0 ;分段测试 JGE L1 L0: INC ZZ JMP NEXT L1: JG L2 INC YY JMP NEXT L2: INC XX NEXT: ADD SI, 1 LOOP AGAINEXIT: MOV AX, 4C00H INT 21H CODE ENDS END START3.7 设有一个管理软件可接受十个键盘命令(分别是A、B、C,.,J),执行这十个命令的程序入口地址分别是PROCA、PROCB、PROCC,.,PROCJ。编写一程序从键盘上接收命令,并转去执行相应

    11、的程序。要求分别用以下两种方式来实现:(1)用比较转移指令(2)用地址表法解:(1)DATA SEGMENT PROMPT DB 0DH, 0AH, INPUT A CHAR (AJ): $ MSGA DB 0DH, 0AH, FUNCTION A EXECUTED . $ MSGB DB 0DH, 0AH, FUNCTION B EXECUTED . $ MSGC DB 0DH, 0AH, FUNCTION C EXECUTED . $ MSGD DB 0DH, 0AH, FUNCTION D EXECUTED . $ MSGE DB 0DH, 0AH, FUNCTION E EXECUTE

    12、D . $ MSGF DB 0DH, 0AH, FUNCTION F EXECUTED . $ MSGG DB 0DH, 0AH, FUNCTION G EXECUTED . $ MSGH DB 0DH, 0AH, FUNCTION H EXECUTED . $ MSGI DB 0DH, 0AH, FUNCTION I EXECUTED . $ MSGJ DB 0DH, 0AH, FUNCTION J EXECUTED . $DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATASTART: MOV AX, DATA MOV DS, AXINPUT: L

    13、EA DX, PROMPT MOV AH, 9 INT 21H ;输出提示信息 MOV AH, 1 INT 21H ;输入一个数字; * 开始测试条件* CMP AL, A JB INPUT ;不在AJ内,重新输入 JE FA ;字符A,转FA CMP AL, B JE FB ;字符B,转FB CMP AL, C JE FC ;字符C,转FC CMP AL, D JE FD ;字符D,转FD CMP AL, E JE FE ;字符E,转FE CMP AL, F JE FF ;字符F,转FF CMP AL, G JE FG ;字符G,转FG CMP AL, H JE FH ;字符H,转FH CM

    14、P AL, I JE FI ;字符I,转FI CMP AL, J JE FJ ;字符J,转FJ JMP INPUT ;大于J,重新输入; * 各分支语句序列*FA: CALL PROCA ;调用PROCA程序块 JMP EXIT ;每个分支结束,都要用JMP指令跳转到所有分支结束的地方FB: CALL PROCB ;调用PROCB程序块 JMP EXIT FC: CALL PROCC ;调用PROCC程序块 JMP EXIT FD: CALL PROCD ;调用PROCD程序块 JMP EXIT FE: CALL PROCE ;调用PROCE程序块 JMP EXIT FF: CALL PROC

    15、F ;调用PROCF程序块 JMP EXIT FG: CALL PROCG ;调用PROCG程序块 JMP EXIT FH: CALL PROCH ;调用PROCH程序块 JMP EXIT FI: CALL PROCI ;调用PROCI程序块 JMP EXIT FJ: CALL PROCJ ;调用PROCJ程序块 JMP EXIT ;最后一个分支结束,JMP可以省略EXIT: MOV AX, 4C00H INT 21HPROCA PROC LEA DX, MSGA MOV AH, 9 INT 21H RETPROCA ENDPPROCB PROC LEA DX, MSGB MOV AH, 9

    16、INT 21H RETPROCB ENDPPROCC PROC LEA DX, MSGC MOV AH, 9 INT 21H RETPROCC ENDPPROCD PROC LEA DX, MSGD MOV AH, 9 INT 21H RETPROCD ENDPPROCE PROC LEA DX, MSGE MOV AH, 9 INT 21H RETPROCE ENDPPROCF PROC LEA DX, MSGF MOV AH, 9 INT 21H RETPROCF ENDPPROCG PROC LEA DX, MSGG MOV AH, 9 INT 21H RETPROCG ENDPPROC

    17、H PROC LEA DX, MSGH MOV AH, 9 INT 21H RETPROCH ENDPPROCI PROC LEA DX, MSGI MOV AH, 9 INT 21H RETPROCI ENDPPROCJ PROC LEA DX, MSGJ MOV AH, 9 INT 21H RETPROCJ ENDPCODE ENDS END START(2)DATA SEGMENT PROMPT DB 0DH, 0AH, INPUT A CHAR (AJ): $ MSGA DB 0DH, 0AH, FUNCTION A EXECUTED . $ MSGB DB 0DH, 0AH, FUN

    18、CTION B EXECUTED . $ MSGC DB 0DH, 0AH, FUNCTION C EXECUTED . $ MSGD DB 0DH, 0AH, FUNCTION D EXECUTED . $ MSGE DB 0DH, 0AH, FUNCTION E EXECUTED . $ MSGF DB 0DH, 0AH, FUNCTION F EXECUTED . $ MSGG DB 0DH, 0AH, FUNCTION G EXECUTED . $ MSGH DB 0DH, 0AH, FUNCTION H EXECUTED . $ MSGI DB 0DH, 0AH, FUNCTION

    19、I EXECUTED . $ MSGJ DB 0DH, 0AH, FUNCTION J EXECUTED . $ADDTBL DW FA,FB,FC,FD,FE,FF,FG,FH,FI,FJ;DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATASTART: MOV AX, DATA MOV DS, AXINPUT: LEA DX, PROMPT MOV AH, 9 INT 21H ;输出提示信息 MOV AH, 1 INT 21H ;输入一个数字 CMP AL, A JB INPUT ;不在AJ内,重新输入 CMP AL, J JA INPUT ;不在

    20、AJ内,重新输入 SUB AL,A ;将数字字符“1”到“3”转换为0, 1, 2 SHL AL, 1 ;转换为0,2,4 MOV BL, AL MOV BH, 0 ;转入BX JMP ADDTBLBX ;间接寻址,转移到对应程序块 ; * 各分支语句序列*FA: LEA DX, MSGA ;FA程序块 JMP OUTPUT ;每个分支结束,都要用JMP指令跳转到所有分支结束的地方FB: LEA DX, MSGB ;FB程序块 JMP OUTPUT FC: LEA DX, MSGC ;FC程序块 JMP OUTPUT FD: LEA DX, MSGD ;FD程序块 JMP OUTPUT FE:

    21、 LEA DX, MSGE ;FE程序块 JMP OUTPUT FF: LEA DX, MSGF ;FF程序块 JMP OUTPUT FG: LEA DX, MSGG ;FG程序块 JMP OUTPUT FH: LEA DX, MSGH ;FH程序块 JMP OUTPUT FI: LEA DX, MSGI ;FI程序块 JMP OUTPUT FJ: LEA DX, MSGJ ;FJ程序块 JMP OUTPUT ;最后一个分支结束,JMP可以省略OUTPUT: MOV AH, 9 INT 21H MOV AX, 4C00H INT 21HCODE ENDS END START3.8 设在寄存器A

    22、X,BX,CX中存放的是16位无符号数,试编写程序段,找出三个数值居中的一个,并将其存入BUFF字单元中。解:DATA SEGMENT BUFF DW 0 DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV AX,5 MOV BX,3 MOV CX,6 CMP AX,BX JA L1 JZ L2 L0: CMP AX,CX ;AXBX JAE L4 ;AXCX L2: CMP BX,CX JBE L5 JMP L6 L1: CMP BX,CX JAE L5 ;BX CMP AX,C

    23、X JA L6 L4: MOV BUFF,AX JMP DONE L5: MOV BUFF,BX JMP DONE L6: MOV BUFF,CX DONE: MOV AX, 4C00H INT 21HCODE ENDS END START3.9 编写确定一个十进制数x(2x200)是否是素数(质数)的程序。解:DATA SEGMENTx DB 12 ;x(2x200)FLAG DB 0 ;X是素数,FLAG=1,否则FLAG=0DATA ENDSCODE SEGMENT ASSUME DS: DATA, CS: CODESTART: MOV AX, DATA MOV DS, AX MOV B

    24、L,2 MOV BH,X SHR BH,1 ;计算测试范围 MOV FLAG,1 ;先假设x为素数NEXT: MOV AL,X MOV AH,0 DIV BL CMP AH,0 ;余数为0,说明不是素数,退出 JZ NO INC BL CMP BL,BH JZ EXIT ;到测试边界,退出 JMP NEXT NO: MOV FLAG,0 EXIT: MOV AX, 4C00H INT 21HCODE ENDS END START3.10 在以BLOCK为首地址的数据区域按着从小到大的顺序存放了一个年级(180人)学生的汇编语言成绩表。试编写程序将分数82插入到该数组合适的位置。解:DATA S

    25、EGMENT BLOCK DB 1,3,5,7,9,12,15,25,35,36,37,40,42,46,57 ;学生的成绩表,可根据实际填写 ST DB 39 ;另外一个学生的成绩DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA SI, BLOCK+14 ;取成绩表中最后一个学生成绩的偏移地址给SI MOV CX, 15 MOV AL, ST CMPBLK: CMP AL, SI ;要插入的学生成绩比成绩表中的成绩小,则转CHANGE JB CHANGE MOV SI+1,AL

    26、 ;插入该学生成绩 JMP DONE CHANGE: MOV BL,SI ;把表中成绩后移 MOV SI+1,BL DEC SI LOOP CMPBLK DONE: MOV AX, 4C00H INT 21H CODE ENDS END START3.11 已知数组A中包含15个互不相等的整数,数据B中包含20个互不相等的整数,试编写一程序,将即在A数组中出现又在B数组中出现的整数存放于数组C中。解:DATA SEGMENT A DB 1,3,5,7,9,12,15,25,35,36,37,40,42,46,57 B DB 3,5,9,12,25,36,37,42,57,58,60,4,8,1

    27、1,17,29,33,44,55,66 C DB 20 DUP (0)DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV ES, AX LEA SI, A LEA BX, C MOV CX, 15 CLD CMPAB: LODSB ;从数组A中取出一个数 LEA DI, B PUSH CX MOV CX, 20 REPNZ SCASB ;与数组B中的元素比较 JNZ LOP ;数据不同,比较下一个数 MOV BX,AL ;数据相同,则保存在数组C中 INC BX LOP: POP CX LOOP CMPAB EXIT: MOV AX


    注意事项

    本文(微机原理习题3.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开