1、微机原理及应用课后答案黄冰 覃伟年 著习题参考答案微机原理习题参考答案第一章 绪论1.2 +6510=01000001B +65补=+65原=01000001B +11510=01110011B +115补=+115原=01110011B -6510=11000001B -65补=10111111B-11510=11110011B -115补=10001101B方法:正数的原码、反码、补码相同负数的补码在原码的基础上除过符号外,先取反,再加1。1.3+12010=0000000001111000B +120补=+120原=000000001111000B -12010=100000000111
2、1000B -120补=1111111110001000B+23010=0000000011100110B +230补=+230原=0000000011100110B-23010=1000000011100110B -230补=1111111100011010B方法:与上题相同,只是扩展了位数,用16位表示1.455 (00110111) 89 (01011001) -115 (11110011) -7总结:知道补码,求原码(或数值)的方法:如果是正数,直接转换。如果是负数用以下三种方法:1 根据X补补=X 求得例如10001101 各位取反 11110010 加一 11110011转换 -1
3、152 求补的逆运算例如:11111001 先减一 11111000 各位取反 10000111 转换 -7-(模+补码转换结果)例如:10001101转换 -13模+补码转换结果 128-13=115 加负号 1151.9本题问题不太明确例如:如果手边有手册或是知道产品的型号,就可从手册中查到微处理器的处理位数。也可以根据系统总线得知。因为系统总线是公共的数据通道,表现为数据传输位数和总线工作时钟频率。第二章 intel 8086 微处理器2.2 75422H 字节单元:9CH 字单元:249CH 75424H 字节单元:5DH 字单元:0E65Dh2.3根据物理地址=段地址*10H+偏移地
4、址得到:段地址偏移地址物理地址1000H117AH1117AH1025H0F2AH1117AH1109H00EAH1117AH 我们可以看到不同段的段地址,在不同的偏移地址下,可以对应相同的物理地址,也就相同的存储空间。说明在分配段时是重叠的.2.4 每个段区最大可占用64KB的地址范围,因为寄存器都是16位的,216B=64KB。不允许重叠,则最多可分16个段区,因为8086CPU有20条地址线,寻址范围1MB,1MB/64KB=16个。2.6指令目的操作数寻址方式源操作数寻址方式 MOV ARRAY, BX直接寻址寄存器寻址ADC CX, ALPHABXSI寄存器寻址带位移的基址变址寻址A
5、ND GAMMADI,11011000B带位移的变址寻址立即数寻址INC BL寄存器寻址隐含寻址TEST ES:SI, DX寄存器间接寻址寄存器寻址SBB SI, BP寄存器寻址寄存器间接寻址2.71 源操作数是立即数寻址,AX=1200H2 源操作数是寄存器寻址,AX=BX=0100H3 源操作数是直接寻址,将2000H10H+1200H=21200H和21201H的内容取出,赋给AX=4C2AH4 源操作数是寄存器间接寻址,将2000H10H+0100H=20100H和20101H的内容取出,赋给AX=3412H5 源操作数是寄存器相对寻址,将2000H10H+0100H+1100H=21
6、200H和21201H的内容取出,赋给AX=4C2AH6 源操作数是基址变址寻址,将2000H10H+0100H+0002H=201002和201003H的内容取出,赋给AX=7856H7 源操作数是基址变址相对寻址, 将2000H10H+0100H+0002H+1100H=21202H和21203H的的内容取出,赋给AX=65B7H2.8指令源操作数寻址方式物理地址MOV AX, 00ABH立即数寻址跟随在指令后,有cs:ip决定MOV AX,BX寄存器寻址在寄存器中MOV AX,100H直接寻址2000H10H+100H=20100HMOV AX,BX寄存器间接寻址2000H10H+010
7、0H=20100HMOV AX,BP寄存器间接寻址1500H10H+0010H=15010HMOV AX,BX+10注意是十进制 带位移的基址寻址2000H10H+0100H+0AH=2010AHMOV AX,BXSI基址变址寻址2000H10H+0100H+00A0H=201A0HMOV AX,VAL直接寻址2000H10H+0050H=20050HMOV AX,ES:BX寄存器间接寻址2100H10H+0100H=21100HMOV AX,SI寄存器间接寻址2000H10H+00A0=200A0HMOV AX,VALBX带位移的基址寻址2000H10H+0100H+0050H=20150H
8、MOV AX,VALBXSI带位移的基址变址寻址2000H10H+0100H+00A0H+0050H=201F0H2.9指令 Sp 值PUSH CX1FFAH66H1FFBH55HPUSH BX1FFCH44H1FFDH33HPUSH AX1FFEH22H1FFFH11H指令sp值 POP AX1FFCHAX=5566HBX=3344HPOP CX1FFEHCX=3344HSP=1FFEH2.10指令AX 的值MOV AX,0AX=0000HDEC AXAX=0FFFFHADD AX,7FFFHAX=7FFEHADD AX,2AX=8000HNOT AXAX=7FFFHSUB AX,0FFFF
9、HAX=8000HADD AX,8000HAX=0000HOR AX,0BFDFHAX=0BFDFHAND AX,0EBEDHAX=0ABCDHXCHG AH,ALAX=0CDABHSAL AX,1AX=9B56H (CF=1)RCL AX,1AX=36ADH (AF=1)2.110110 0010 1010 0000B+ 1001 1101 0110 0000B1 0000 0000 0000 0000B (0000H) AF=0,SF=0,ZF=1,CF=1,OF=0,PF=1 0110 0010 1010 0000B+ 0100 0011 0010 0001B 1010 0101 110
10、0 0001B (0A5C1H) AF=0,SF=1,ZF=0,CF=0,OF=1,PF=02.12 0001 0010 0011 0100B 0100 1010 1110 0000B 1011 0101 0010 0000B补码形式 1100 0111 0101 0100B(0C754H) AF=0 SF=1 ZF=0 CF=1 OF=0 PF=0 1001 0000 1001 0000B 0100 1010 1110 0000B 1011 0101 0010 0000B补码形式 0100 0101 1011 0000B (45B0H) AF=0 SF=0 ZF=0 CF=0 OF=1 PF
11、=1 2.131 BX=009AH2 BX=0061H3 BX=00FBH4 BX=001CH5 BX=0000H6 BX=00E3H (本条语句只对标志位有影响,不存贮结果)2.14BX=0110 1101 0001 0110=6D16HBX=0000 0000 1101 1010=00DAH2.151 DX=0000 0000 1011 1001 DX= 0000 0000 0101 1100=005CH2 DX=0000 0000 1011 1001 DX= 0000 0000 0001 0111=0017H3 DX=0000 0000 1011 1001 DX= 0000 0101 1
12、100 1000=05C8H4 DL= 1011 1001 DX=0000 0000 0111 0010=0072H5 DX=0000 0000 1011 1001 DX=0010 0000 0001 0111=2017H6 DL= 1011 1001 DX= 0000 0000 1100 1101=00CDH7 DH=0000 0000 DX=0000 0000 1011 1001=00B9H8 DX=0000 0000 1011 1001 DX=0000 0101 1100 1100=05CCH CF=09 DL= 1011 1001 DL=0000 0000 1101 1100=00DC
13、H CF=12.16方法一: 循环移位 方法二:逻辑右移MOV CL,04H MOV CL,04HROL AL,CL SHR AL,CL第三章 宏汇编语言程序设计3.1 1)AX=0001H;2)AX=0002H3)CX=0014H4)DX=0028H5)CX=0001H3.21) ARRAY DB 56H,78,0B3H,1002) DATA DW 2965H,45H,2965,0A6H3) ALPHA DW 0C656H,1278H4) BETA DB 2 DUP(23),5 DUP(A),10 DUP(1,2),20 DUP(?)5)STRING DB THIS IS A EXAMPE6
14、)COUNT EQU 1003.300H00H01H00H00H00H00H01H00H00H00H01H00H00H00H01H00H00H00H01H?42H41H44H43H1DH1FH (1) (2) BYTE_VARR41H42H43H44H4CH(76)57H?01H03H01H03H3.4DATA_SEG SEGMENTDATA1 DB DATA SEG,MENTDATA2 DB 72,65,-10DATA3 DB 109,98,21,40DATA4 DB 10 DUP(0)DATA5 DB 12345DATA6 DW 7,9,298,1967DATA7 DW 785,13475
15、DATA8 DW DB ($-DATA6)-(DATA6-DATA1)DATA_SEG ENDS3.51) MOV BX, OFFSET BUF12) MOV CL BYTE PTR BUF2+23) MOV BUF3+9, A6H4) COUNT EQU BUF3-BUF13.8DATA_SEG SEGMENTAPPAY DB 10 DUP (29H)ALPHA DB -25,4,10,76,3BUFFER DB 100 DUP(?)DATA_SEG ENDS3.9DATA_SEG SEGMENTBCD1 DB ?,?BCD2 DB ?DATA_SEG ENDSCODE SEGMENT AS
16、SUME CS:CODE, DS:DATA_SEG,ES:DATA_SEGSTART: MOV AX,DATA_SEGMOV DS,AXMOV DS, AXMOV CL, 04HMOV SI, OFFSET BCD1MOV AL, SISAL AL,CLMOV BL,SI+1AND BL,0FHADD AL,BLMOV BCD2,ALMOV AH,4CHINT 21HCODE ENDSEND START3.11 1) MOV CH, 32H CH=32H 2) ADD CH, 2AH CH=5CH 3) SHL CH, 1 CH=0B8H 4) MOV BXNUM+9,CH CH=0B8H3.
17、12DATA_SEG SEGMENTX DB ?Y DB ?W DB ?Z DB ?R DB ?DATA_SEG ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA_SEG,ES:DATA_SEGSTART: MOV AX, DATA_SEGMOV DS, AXMOV DS, AXMOV AL, WSUB AL, XCBW IDIV 0AHMOV R, AHIMUL YIMUL AXMOV AH, 4CHINT 21HCODE ENDSEND START3.14DATA_SEG SEGMENTSTR1 DB THIS IS A DOGSTR2 DB THIS IS
18、 A COCK COUNT DB $-STR2NUM DB ?DATA_SEG ENDSCODE SEGMENT ASSUME CS: CODE, DS:DATA_SEG,ES:DATA_SEGSTART: MOV AX, DATA_SEGMOV DS, AXMOV DS, AXMOV ES, AXMOV CH,0MOV CL, COUNTCLDMOV SI,OFFSET STR1MOV DI,OFFSET STR2REPZ CMPSBAND SI,000FHMOV AX,SIMOV NUM, ALCODE ENDSEND START3.16 DATA SEGMENT SRCBUF DB 80
19、 DUP(?) DSTBUF DB 80 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX,DATA MOV DS, AX MOV SI, OFFSET SRCBUF MOV DI, OFFSET DSTBUF MOV CX, 80 LOP1: MOV AL,SI INC SI CMP AL,ODH JE NEXT MOV DI,AL INC DI NEXT:LOOP LOP1 MOV AH,4CH INT 21H CODE ENDS END START3.17 DATA SEGMENT BUF DB n
20、DUP (?) SUM DB O DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, n MOV SI, OFFSET BUF LOP1: MOV AL, SI INC SI CMP AL,O JGE NEXT INC SUM NEXT: LOOP LOP1 MOV AH, 4CH INT 21H CODE ENDS END START3.18 DATA SEGMENT BUF DW n DUP(?) BUF1 DW n DUP(?) BUF2 DW n DUP(?)DATA
21、 ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, n MOV SI, OFFSET BUF MOV DI, OFFSET BUF1 MOV BX, OFFSET BUF2 LOP1: MOV AX, SI INC SI INC SI CMP AX, 0000H JGE NEXT1 MOV BX, AX ADD BX, 02H JMP LOP2 NEXT1: MOV DI, AX ADD DI, 2 LOP2: LOOP LOP1 MOV AH, 4CH INT 21H CODE E
22、NDS END START3.19STACK SEGMENT STACK DB 256 DUP(?)STACK ENDS DATA SEGMENT BUF DB This is a string,$DATA ENDSCODE SEGMENT ASSUME CS:CODE. DS:DATA; SS:STACKSTART: MOV AX, DATA MOV DS, AX MOV SI,OFFSET BUF TACKCHAR: MOV DL,SI CMP DL,$ JZ DONE CMP DL,a JB NEXT SUB DL,20H NEXT: MOV AH,02H INT 21H INC SI
23、MP TAKECHAR DONE: MOV AH,4CH INT 21H CODE ENDS END START320 DATA_SEG SEGMENT DATX DB ? DATY DB ? DATZ DB ?DATA_SEG ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA_SEGSTART: MOV AX,DATA_SEG MOV DS,AXMOV AL,DATXMOV BL,DATY CMP AL,BL JS NEXT MOV DATZ,AL JMP DONENEXT: MOV DATZ,BLDONE: MOV AH,4CH INT 21HCODE EN
24、DSEND START3.21DATA_SEG SEGMENT DATA DB ? DATB DB ? DATC DB ? DATD DB ?DATA_SEG ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA_SEGSTART: MOV AX,DATA_SEG MOV DS,AX CMP DATA,0 JZ NEXT CMP DATB,0 JZ NEXT CMP DATC,0 JZ NEXT MOV AL,DATA ADD AL,DATB ADC AL,DATC MOV DATD,AL JMP DONENEXT: MOV DATA,0MOV DATB,0 MOV
25、 DATC,0DONE: MOV AH,4CHINT 21HCODE ENDSEND START3.22 程序段是将十六进制数的ASSII码转化为十六进制数.本例是将大写字母A的ASCII变为十六进制数,将结果存入字符变量HEXNUM中。HEXNUM变量中原来的内容未知,程序段执行后的内容是字符A的十六进制数0A3.24DATA_SEG SEGMENT N=10DATA1 DB N DUP(?) DATA2 DB N DUP(?) ADR1 DW ? ADR2 DW ? DATA_SEG ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA_SEGSTART: MO
26、V AX, DATA_SEGMOV DS, AXLEA SI, DATA1LEA DI,DATA2MOV CX, NLOP1: MOV AH,SICMP AH,DI JNZ NOTEQUINC SIINC DILOOP LOP1MOV AH,0FFHSAHFJMP DONENOTEQU: MOV AH,0SAHFMOV ADR1,SIMOV ADR2,DIDONE:MOV AH,4CHINT 21HCODE ENDSEND START3.26DATA_SEG SEGMENTCOUNT=100BUF DB COUNT NUP(?) MAX DB ?DATA_SEG ENDSCODE SEGMEN
27、T ASSUME CS:CODE, DS:DATA_SEGSTART: MOV AX, DATA_SEG MOV DS, AXMOV SI, OFFSET BUFMOV CX,COUNTLOP1: MOV AH,1INT 21HMOV SI, ALINC SILOOP LOP1MOV SI,OFFSET BUFMOV CX,COUNTMOV AL, SILOP2:CMP AL, SI+1JA NEXT2XCHG AL,SI+1INC SINEXT2:LOOP LOP2MOV MAX,ALMOV AH, 4CHINT 21HCODE ENDSEND START3.27DATA_SEG SEGME
28、NT BUF DB 10 DUP(?)STR1 DB Do you want input number(y/n)?,0DH,0AH,$STR2 DB Please input the numbers ,0DH,0AH,$ MAX DB ? MIN DB ?DATA_SEG ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA_SEGSTART: MOV AX, DATA_SEGMOV DS, AXMOV DX,OFFSET STR1MOV AH,09HINT 21HMOV DX,OFFSET STR2MOV AH,09HINT 21HMOV SI, OFFSET BUFMOV CX,10LOP1:MOV AH,1INT 21HMOV SI, ALINC SILOOP LOP1MOV SI,OFFSE
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1