微机原理第三章习题答案.docx
- 文档编号:17106902
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:10
- 大小:18.17KB
微机原理第三章习题答案.docx
《微机原理第三章习题答案.docx》由会员分享,可在线阅读,更多相关《微机原理第三章习题答案.docx(10页珍藏版)》请在冰点文库上搜索。
微机原理第三章习题答案
习题3答案
1.指出下列指令的错误原因。
(1)ANDAX,DL;类型不匹配
(2)ADDCS,DX;CS不能作为目的操作数
(3)MOVAX,IP;IP不能作为指令的操作数
(4)MOV[BP][SI],[SI];两个操作数不能同时为内存操作数
(5)SUB[BP][SI],ES:
DX;段超越前缀只能用在内存操作数之前
(6)XCHGAL,[SI][DI];没有[SI][DI]这种操作数形式
(7)JGEAX;条件转移指令的操作数只能是标号
(8)PUSHDL;对堆栈不能进行字节操作
2.用一条指令将BX清0。
(请给出3种方法)
方法1:
MOVBX,0
方法2:
SUBBX,BX
方法3:
ANDBX,0;将BX和0做与,可以将BX清零
方法4:
XORBX,BX
3.写出实现下列功能的指令序列。
(1)判断AX的值,若AX等于0,则转到标号LABEL处。
(请写出3种方法)
方法1:
CMPAX,0
JZLABEL;如果ZF=0,说明AX为0,因为CMP指令是做减法,但是不写回结果
;因此指令执行后AX内容不会受到破坏
方法2:
TESTAX,0FFH
JZLABEL;如果ZF=0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。
;和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已
;经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏
方法3:
ANDAX,0FFH;这个方法的原理和方法2其实是完全一致的
JZLABEL
(2)将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。
MOVAH,AL
ANDAL,0FH;AL高4位通过与清零,而低4位保持不变
MOVCL,4
SHRAH,CL;这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零
(3)若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。
TESTAX,01H;TEST做与运算,通过与来检测AX的最低位
JNZCONTINUE;如果ZF=1,说明AX的最低位是0,那么AX中的数是偶数,就跳转,否则,
;说明AX中的是奇数,而BX中的是偶数,符合结果要求,不用动了
XCHGAX,BX
CONTINUE:
….
4.分析下列指令序列完成什么功能。
MOVCL,4
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
答案:
将DX.AX中的32位数整体逻辑左移4位。
5.给出下列各条指令执行后AL以及CF、OF、SF、和ZF的值。
指令
AL
CF
OF
SF
ZF
备注
MOVAL,100
100/64H
XORAL,AL
100/64H
0
0
1
0
XOR后CF=OF=0,其余据结果设置
MOVAL,-1
-1/0FFH
0
0
1
0
MOV指令不影响标志位
INCAL
0
0
0
0
1
INC不影响CF,其余据结果设置
NOTAL
0FFH
0
0
0
1
NOT指令不影响标志位
SHLAL,1
0FEH
1
0
1
0
SHL据移出的位设CF,据结果设SF,ZF,一位移动,据移位前后最高位是否变化设置,有变化OF=1,无变化OF=0
CMPAL,10
0FEH
0
0
1
0
CMP指令根据结果设置6个标志位
SUBAL,7FH
7FH
0
0
0
0
SUB根据俄结果设置6个标志位
SHLAL,1
0FEH
0
1
1
0
解释同上
6.比较AX,BX和CX中无符号数的大小,将最小数放入AX中。
答案:
CMPAX,BX
JCBBB;如果AX<=BX,跳转
XCHGAX,BX;否则,交换AX和BX的值,将两者中的小值放到AX中去
BBB:
CMPAX,CX
JCCCC;如果AX<=CX,跳转
XCHGAX,CX;否则,交换AX和CX的值,将两者中的小值放到CX中去
CCC:
INT20H;返回DOS
7.变量定义伪指令与符号定义伪指令的主要作用是什么?
答案:
变量定义伪指令:
主要用来为某种类型(比如字节型、字型)的内存单元的地址指定一个可以引用的名字标识。
符号定义伪指令:
其实就是定义一个宏替换常量,用定义的符号代表一个文本串或者一个数值,在程序中遇到定义的符号时用相应的文本串或者数值去替换。
8.设有下列段定义:
DSEGSEGMENT
XDW1,3
DSEGENDS
给出下列两组指令序列分别执行后AX的值。
(1)MOVAX,DSEG
MOVDS,AX
MOVAX,X+1
(2)MOVAX,SEGX
MOVES,AX
MOVAX,ES:
X
INCAX
答案:
(1)(AX)=2
(2)(AX)=2
备注:
这两小段程序实现的功能是相同的,都是给子类型的变量X的值加1。
第二段程序采用了段超越方式来寻址操作数。
9.设有如下定义的数据段:
DATASEGMENT
ORG100
V1DW2DUP(20),$+10
BUF1DB‘100’,5
DD0
BUF2DW1,2,2A9H
LENEQUBUF2–BUF1
VADWBUF1
DATAENDS
则V1+1中存放的字节数据为(0),V1+4中存放的字数据为(114/72H),VA的内容为(106/6AH),LEN的值为(8)。
10.在数据段定义的两个变量S1和S2,要求设计一个完整的程序,将以S1为首地址的50个字节依次传送到以S2为首地址的内存单元中。
File1.ASM
datasgsegment
s1db25dup('12')
s2db50dup(0)
datasgends
codesgsegment
assumecs:
codesg,ds:
datasg
start:
movax,datasg
movds,ax
moves,ax
movsi,offsets1
movdi,offsets2
movcx,50
repmovsb
movax,4c00h
int21h
codesgends
endstart
11.从键盘读入一个字符串(长度<50),统计其字母、数字及其他字符的个数。
File2.asm
datasgsegment
buff1db50;最大能容纳的字符个数
countdb(?
);实际输入的字符个数
buff2db50dup(?
);实际字符缓冲区
lettersdb0;输入的字母个数
digitsdb0;输入的数字个数
othersdb0;输入的其他字符的个数
datasgends
codesgsegment
assumecs:
codesg,ds:
codesg
start:
movax,datasg
movds,ax
movdx,offsetbuff1;为0AH号系统功能调用准备输入参数DS:
DX指向输入缓冲区的首地址
movah,0ah
int21h
xoral,al
movch,0
movcl,count;CX中存放循环次数
movsi,offsetbuff2;为lodsb准备源地址,DS:
SI指向实际的字符串地址
cld
check:
lodsb;取一个数据到AL
cmpal,'A'
jcx1
cmpal,'Z'
jncx1
incletters;将字符串中的大写字母个数统计到letters变量中
jmpnext
x1:
cmpal,'a'
jcx2
cmpal,'z'
jncx2
incletters;将字符串中的小写字母个数统计到letters变量中
jmpnext
x2:
cmpal,'1'
jcx3
cmpal,'9'
jncx3
incdigits;将字符串中的数字字符统计到digits变量中
jmpnext
x3:
incothers;统计其他字符个数
next:
loopcheck
movax,4c00h
int21h
codesgends
endstart
12.设计一个程序,求10个无符号数中的最大值。
并将最大值存入变量MAX中。
File3.asm
datasgsegment
arraydb20,12,16,14,13,90,45,32,67,100;字节型数组
maxdb0
datasgends
codesgsegment
assumecs:
codesg,ds:
datasg
start:
movax,datasg
movds,ax
leasi,array;数组首地址
movcx,10;数组元素个数
cld;让地址值不断增大
lodsb;将第一个数组元素放到AL中
movmax,al
deccx
next:
lodsb;取下一个数组元素到AL中
cmpal,max
jcgoon;(al)<=max则max中的值不变
movmax,al;否则max=(al)
goon:
loopnext
movax,4c00h
int21h
codesgends
endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 第三 习题 答案