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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

微机原理第三章习题答案.docx

1、微机原理第三章习题答案习题3答案1. 指出下列指令的错误原因。(1) AND AX, DL ;类型不匹配(2) ADD CS, DX ;CS不能作为目的操作数(3) MOV AX, IP ;IP不能作为指令的操作数(4) MOV BPSI, SI ;两个操作数不能同时为内存操作数(5) SUB BPSI, ES:DX ;段超越前缀只能用在内存操作数之前(6) XCHG AL, SIDI ;没有SIDI这种操作数形式(7) JGE AX ;条件转移指令的操作数只能是标号(8) PUSH DL ;对堆栈不能进行字节操作2. 用一条指令将BX清0。(请给出3种方法)方法1:MOV BX, 0 方法2

2、:SUB BX, BX 方法3:AND BX, 0 ;将BX和0做与,可以将BX清零方法4:XOR BX, BX3. 写出实现下列功能的指令序列。(1) 判断AX的值,若AX等于0,则转到标号LABEL处。(请写出3种方法)方法1:CMP AX, 0 JZ LABEL ; 如果 ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果 ; 因此指令执行后AX内容不会受到破坏方法2:TEST AX, 0FFHJZ LABEL ; 如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。 ; 和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标

3、志位已; 经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏方法3:AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的JZ LABEL(2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。MOV AH, AL AND AL, 0FH ; AL高4位通过与清零,而低4位保持不变MOV CL, 4 SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。TEST AX, 01H ;TEST

4、做与运算,通过与来检测AX的最低位JNZ CONTINUE ;如果ZF = 1,说明AX的最低位是0,那么AX中的数是偶数,就跳转,否则, ;说明AX中的是奇数,而BX中的是偶数,符合结果要求,不用动了XCHG AX, BX CONTINUE : .4. 分析下列指令序列完成什么功能。MOV CL, 4SHL DX, CLMOV BL, AHSHL AX, CLSHR BL, CLOR DL, BL答案:将DX.AX中的32位数整体逻辑左移4位。5. 给出下列各条指令执行后AL以及CF、OF、SF、和ZF的值。指令ALCFOFSFZF备注MOV AL, 100100/64HXOR AL, AL

5、100/64H0010XOR后CF=OF=0,其余据结果设置MOV AL, -1-1/0FFH0010MOV指令不影响标志位INC AL00001INC不影响CF,其余据结果设置NOT AL0FFH0001NOT指令不影响标志位SHL AL, 10FEH1010SHL据移出的位设CF,据结果设SF,ZF,一位移动,据移位前后最高位是否变化设置,有变化OF = 1, 无变化OF = 0CMP AL, 100FEH0010CMP指令根据结果设置6个标志位SUB AL, 7FH7FH0000SUB根据俄结果设置6个标志位SHL AL, 10FEH0110解释同上6. 比较AX,BX和CX中无符号数的

6、大小,将最小数放入AX中。答案:CMP AX, BXJC BBB ; 如果AX = BX,跳转XCHG AX, BX ; 否则,交换AX和BX的值,将两者中的小值放到AX中去BBB:CMP AX, CX JC CCC ; 如果AX = CX,跳转XCHG AX, CX ; 否则,交换AX和CX的值,将两者中的小值放到CX中去CCC:INT 20H ;返回DOS7. 变量定义伪指令与符号定义伪指令的主要作用是什么?答案:变量定义伪指令:主要用来为某种类型(比如字节型、字型)的内存单元的地址指定一个可以引用的名字标识。符号定义伪指令:其实就是定义一个宏替换常量,用定义的符号代表一个文本串或者一个数

7、值,在程序中遇到定义的符号时用相应的文本串或者数值去替换。8. 设有下列段定义:DSEG SEGMENTX DW 1, 3DSEG ENDS给出下列两组指令序列分别执行后AX的值。(1) MOV AX, DSEG MOV DS, AX MOV AX, X+1(2) MOV AX, SEG X MOV ES, AX MOV AX, ES: X INC AX答案:(1) (AX) = 2(2) (AX) = 2备注:这两小段程序实现的功能是相同的,都是给子类型的变量X的值加1。第二段程序采用了段超越方式来寻址操作数。9. 设有如下定义的数据段:DATA SEGMENT ORG 100V1 DW 2

8、 DUP (20), $ + 10BUF1 DB 100, 5 DD 0BUF2 DW 1, 2, 2A9HLEN EQU BUF2 BUF1VA DW BUF1DATA ENDS则V1+1中存放的字节数据为 ( 0 ), V1+4中存放的字数据为( 114 / 72H ),VA的内容为 ( 106 / 6AH ),LEN的值为 ( 8 )。10. 在数据段定义的两个变量S1和S2,要求设计一个完整的程序,将以S1为首地址的50个字节依次传送到以S2为首地址的内存单元中。File1.ASMdatasg segments1 db 25 dup (12)s2 db 50 dup (0)datasg

9、 endscodesg segment assume cs : codesg, ds : datasgstart: mov ax, datasg mov ds, ax mov es, ax mov si, offset s1 mov di, offset s2 mov cx, 50 rep movsb mov ax, 4c00h int 21h codesg endsend start 11. 从键盘读入一个字符串(长度 50),统计其字母、数字及其他字符的个数。File2.asmdatasg segmentbuff1 db 50 ;最大能容纳的字符个数count db (?) ;实际输入的字

10、符个数buff2 db 50 dup (?) ;实际字符缓冲区letters db 0 ;输入的字母个数digits db 0 ;输入的数字个数others db 0 ;输入的其他字符的个数datasg endscodesg segment assume cs:codesg, ds:codesgstart: mov ax, datasg mov ds, ax mov dx, offset buff1 ;为0AH号系统功能调用准备输入参数DS:DX指向输入缓冲区的首地址 mov ah, 0ah int 21h xor al, al mov ch, 0 mov cl, count ;CX中存放循环

11、次数 mov si, offset buff2 ;为lodsb准备源地址,DS:SI指向实际的字符串地址 cldcheck: lodsb ;取一个数据到AL cmp al, A jc x1 cmp al, Z jnc x1 inc letters ;将字符串中的大写字母个数统计到letters变量中 jmp nextx1: cmp al, a jc x2 cmp al, z jnc x2 inc letters ;将字符串中的小写字母个数统计到letters变量中 jmp nextx2: cmp al, 1 jc x3 cmp al, 9 jnc x3 inc digits ;将字符串中的数字

12、字符统计到digits变量中 jmp nextx3: inc others ;统计其他字符个数next: loop check mov ax, 4c00h int 21hcodesg ends end start12. 设计一个程序,求10个无符号数中的最大值。并将最大值存入变量MAX中。File3.asmdatasg segmentarray db 20, 12, 16, 14, 13, 90, 45, 32, 67, 100 ;字节型数组max db 0datasg endscodesg segment assume cs:codesg, ds:datasgstart: mov ax, datasg mov ds, ax lea si, array ;数组首地址 mov cx, 10 ;数组元素个数 cld ;让地址值不断增大 lodsb ;将第一个数组元素放到AL中 mov max, al dec cxnext: lodsb ;取下一个数组元素到AL中 cmp al, max jc goon ;(al) = max 则 max中的值不变 mov max, al ;否则 max = (al)goon: loop next mov ax,4c00h int 21hcodesg ends end start

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

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