微机原理12B下
- 格式:doc
- 大小:74.00 KB
- 文档页数:3
第1章计算机基础知识3. 填空:(1) (1234)10=( )2=( )16(2) (34.6875)10=( )2=( )16(3) (271.33)10=( )2=( )16(4) (101011001001)2=( )10=( )16(5) (1AB.E)16=( )10=( )2(6) (10101010.0111)2=( )10=( )16【解】(1) (1234)10=( 10011010010 )2=( 4D2 )16(2) (34.6875)10=( 100010.1011 )2=( 22.B )16(3) (271.33)10=( 100001111.010101 )2=( 10F.54 )16(4) (101011001001)2=( 2761 )10=( AC9 )16(5) (1AB.E)16=( 427.875 )10=(110101011.111 )2(6) (10101010.0111)2=( 170.4375 )10=( AA.7 )164. 已知X=36,Y=-136,Z=-1250,请写出X、Y、Z的16位原码、反码和补码。
【解】[X]原=0000 0000 0010 0100[Y]原=1000 0000 1000 1000[Z]原=1000 0100 1110 0010[X]反=0000 0000 0010 0100[Y]反=1111 1111 0111 0111[Z]反=1111 1011 0001 1101[X]补=0000 0000 0010 0100[Y]补=1111 1111 0111 1000[Z]补=1111 1011 0001 11105. 已知[X]补=01010101B,[Y]补=10101010B,[Z]补=1000111111111111B,求X、Y、Z及X+Y、Y-Z 的十进制值为多少?【解】Y-Z运算时Y需要扩展符号位X=85Y=-86Z=-28673X+Y=01010101B+10101010B=11111111B=-1Y-Z=11111111 10101010B-10001111 11111111B=11111111 10101010B+01110000 00000001B=0110 1111 1010 1011B=285877. 将下列十进制数表示为8421BCD码:(1) 8609 (2) 5254 (3) 2730 (4) 2998【解】 (1)1000 0110 0000 1001(2)0101 0010 0101 0100(3)0010 0111 0011 0000(4)0010 1001 1001 10008. 将下列8421BCD码表示为十进制数和二进制数:(1) 01111001 (2) 001010000101 (3) 011000000111 (4) 010*********【解】(1)79,1001111B(2)285,100011101B(3)607,1001011111B(4)590,1001001110B9. 将下列数值或字符串表示为相应的ASCII码:(1) 51 (2) 7FH (3) C6H (4) Computer (5) how are you?【解】(1)0110101 0110001(2)0110111 1100110 1101000(3)1100011 0110110 1101000(4)1100011 1101111 1101101 1110000 1110101 1110100 1100101 1110010(5)1101000 1101111 1110111 0100000 1100001 1110010 1100101 0100000 1111001 1101111 1110101 011111112. 微型计算机由哪几部分组成,各部分的功能是什么?【解】微型计算机由运算器、控制器、存储器、输入设备、输出设备五大部分组成。
微机原理试题库合集第1套一、填空题:(每空1分,共20分)1.以8086/8088CPU标志寄存器中有6个状态标志和_____3____个控制标志。
2.若有二个数8439H和A56AH进行相加,则运算后标志寄存器中的ZF= 0 ,PF=1 ,CF= 1 ,OF= 1 。
3.8086在每个总线周期的T3状态开始对 READY 信号进行采样,若其为高电平,则进入T4状态。
4.设CS=3100H,DS=40FEH,两段的空间均为64K个单元,则两段的重叠区为 32 个单元,两段的段空间之和为 131040个单元。
5.8086/8088系统,中断向量表中,每个中断向量占用___4_____个字节。
6.对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容TABLE1 DB ?,?,?TABLE2 DW 26 DUP(?)……MOV AX,TYPE TABLE1;(AX)= 1MOV BX,TYPE TABLE2;(BX)= 2MOV CX,LENGTH TABLE2;(CX)= 26MOV DX,SIZE TABLE2;(DX)= 527.在使用8086间接输入/输出指令时,必须在执行该指令之前将相应的端口地址送入 DX__ 寄存器中。
8.8k×8位的SRAM存储芯片,需要寻址线13根。
9.8086/8088CPU复位后,代码段寄存器CS的值为___FFFFH________ 。
10.8086/8088CPU,由INTR引脚引起的中断称为___可屏蔽______中断。
11.8086/8088系统中,一个栈的深度最大为_____64_____KB。
12.存储器是计算机中的记忆设备,主要用来存放程序和_____数据____ 。
13.在微型计算机系统中,CPU对输入输出的寻址可归纳为__统一编址_和独立编址两种方式。
二、选择题 (每题1分,共10分)1.若由1K×1位的RAM芯片组成一个容量为8K字(16位)的存储器时,需要该芯片数为B 。
第一章微型计算机概论1.12 以下十进制数对于的八位二进制补码是怎样表示的?(1)102[102]补=01100110B(2)34[34]补=00100010B(3)96[96]补=01100000B(4)-100[-100]原=11100100B[-100]反=10011011B[-100]补=10011100B(5)-64[-64]原=11000000B[-64]反=10111111B[-64]补=11000000B(6)0[0]补=00000000B1.14 为什么我们会用16进制表示数据?请将下列十进制数转换成对应的十六进制数。
(1)354=162H(2)102=66H(3)64=40H(4)256=100H(5)127=7FH(6)32=20H(7)135=87H(8)67=43H1.15 现有如下十进制数,将其转换成对应的二进制数。
(1)34.5=10010.1B(2)20.125=10100.001B(3)17.12=10001.0001B(4)100.4=1100100.01B(5)50.05=110010.00001B(6)19.3=10011.01B1.16 将下列十六进制数表示成二进制数。
(1)0FFH=1111 1111B(2)34H=0011 0100B(3)67H=0110 0111B(4)4EH=0100 1110B(5)90H=1001 0000B(6)4DH=0100 1101B(7)5AH=0101 1010B1.17 请写出以下补码表示的二进制数真值。
[X]补=1000 0000 0000 0000BX=-32768[Y]补=1111 1111 1111 1111B[Y]反=1111 1111 1111 1110B[Y]原=1000 0000 0000 0001BY=-1[Z]补=0111 1111 1111 1111BZ=32767[W]补=1111 0000 0000 0000B[W]反=1110 1111 1111 1111B[W]原=1001 0000 0000 0000BW=-4096[Q]补=0100 0000 0000 0000BQ=16384[P]补=1000 0000 0000 0001B[P]反=1000 0000 0000 0000B[P]原=1111 1111 1111 1111BP=-327671.20 请判断以下八位二进制数补码运算是否会产生溢出,或者产生进位,为什么?(1)-23+78[-23]补+[78]补=E9H+4EH=(1)37H无溢出,有进位(2)-45-92[-45]补+[-92]补=D3H+A4H=(1)77H有溢出,有进位(3)89+30[89]补+[30]补=59H+1EH=77H无溢出,无进位(4)78-52[78]补+[-52]补=4EH+CCH=(1)1AH无溢出,有进位(5)83-(-30)[83]补+[30]补=53H+1EH=71H无溢出,无进位(6)126-(-34)[126]补+[34]补=7EH+22H=A0H有溢出,无进位(7)108+34[108]补+[34]补=6CH+22H=8EH有溢出,无进位1.22 设有X=80H,Y=79H,Z=88H,在下述情况下比较三个数的大小。
*教材:《微机原理与接口技术实用教程》,杨帮华等编,清华大学出版社,2008. 5习题一1、十进制一二进制:73.8125 =2、十进制一十六进制:299. 34375 =3、二进制一十进制:10010010. 001B =4^十六进制一十进制:8F. 7H =5、已知:a = 1011B, b = 11001B, c = 100110B,用二进制完成下列算术运算,并用十进制运算检查结果:(1)a+b; (2) c-a~b;(3) aXb; (4) c/a。
6、已知:a = 00111000B, b = 11000111B,试求以下逻辑运算结果:(1) a AND b ;(2) a OR b ;(3) a XOR b ; (4) NOT a。
7、写出下列各数的8位原码和补码:(1) +1010101B;(2) -1010101B;(3) +1111111B;(4) -1111111B;(5) +1000000B;(6) -1000000B;(7) +34 ;(8) -69。
8、对下列8位补码分别进行a+b和a-b运算,并判断结果是否溢出:(1) a = 37H, b = 57H; (2) a =0B7H, b =0D7H ;(3) a =0F7H, b =0D7H; (4) a = 37H, b =0C7H 。
9、将下列十进制数用BCD表示,并用加6修正法求运算结果:(1) 38+42;(2) 56+77;(3) 99+88;(4) 34+69 。
10、将下列字符串用偶校验ASCII表示(以十六进制形式):(1) SAM JONES; (2) -75. 61。
11、用规格化浮点数表示(设阶为4位原码,尾为8位补码):-3. 125 =*习题一参考答案1、01001001.1101B2、12B.58H3、146.1254、143.43755、100100B, 0010B, 100010011B, 0011B...0101B6、00000000B, 11111111B, 11111111B, 11000111B7、01010101B、01010101B, 11010101B、10101011B, 01111111B、01111111B,11111111B、10000001B, 01000000Bs 01000000B, 11000000> 11000000B,00100010B、00100010B, 11000101B、10111011B8、8EHx、E0H V , 8EH "、E0H V , CEH ”、20H V , FEH ”、70H V9、80, (1)33, (1)87, (1)0310、53、41、4D、20、4A、4F、4E、45、53, 2D、37、35、2E、36、31 (H)偶校验:0101001k 01000001、01001101, 10100000、11001010> 1100111k 01001110, 1100010k01010011, 00101101, 1011011K 0011010k 00101110> 00110110, 10110001 (B)11、一3.125 = —11.001B=—0.11001B X 2+2,即:0010 10011100B (阶为4位原码,尾为8位补码)习题二教材P24 (1.8习题):一、6教材 P115 (3. 5 习2, 习题三 二、1*习题三参考答案 教材P115 (3. 5习题):一、1、假定 DS=2000H, SS=1500H, SI=OOAOH, BX=0100H, BP=0010H,数据变量 VAL 的偏地址为0050H,请指出下列指令中源操作数采用什么寻址方式?若源操作数在存储器(1) MOV AX, OABH (2) MOV AX, [100H](3) MOV AX, VAL(4) MOV BX, [SI](5) MOV AL, VAL[BX](6) MOV CL, [BP][SI] ;立即寻址;直接寻址,EA=0100H, PA=DSX10H+EA=20100H ;直接寻址,EA=VAL=0050H, PA=DS X 10H+EA=20050H ;寄存器间接寻址,EA=SI=OOAOH, PA=DSX10H+EA=200A0H ;寄存器相对寻址,EA=BX+VAL=0150H, PA=DSX 10H+EA=20150H ;基址变址寻址,EA=BP+SI=OOBOH, PA=SS X(1) MOV AH, BX (2) MOV [SI], [BX] (3) MOV AX, [SI][DI]MOV AX, [BX][BP];X ,源、目的字长不一致(或类型不一致) ;X ,源、目的不可同为存储器操作数 ;X,基址变址寻址不可SI 与DI 组合 ;X,基址变址寻址不可BX与BP 组合教材 P77 (2. 5 习题):一、1, 2, 3, 5, 6, 7, 8; 二、2, 4 补充题: 1、 将62A0H 加下列各数,试求其和及标志位AF 、SF 、ZF 、OF 、CF 、PF 的值。
微机原理习题及答案(总13页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--微机原理习题册第 1 章数制和码制1.将下列十进制数分别转换为二进制数(4)(1)147 (2)4095 (3)解:147=B 4095=B= =2. 将下列二进制数分别转换为十进制数(3)(1)(2).001B解:= .001B==3.将二进制数转换成十六进制数(1)B(2)11B(3)101B (4)0B(5)01111111B(6)0B 解:(1)95H(2)34BH(3)FFFDH(4)0815H(5)7FH(6)401H4.已知 a=1011B, b=11001B, c=100110B,按二进制完成下列运算,并用十进制运算检查计算结果:(1)a+b;(2)c-a-b;(3)a·b;(4)c/b;解:a=1011B=11, b=11001B=25, c=100110B=38(1)a+b=100100B=36 (2)c-a-b=10B=2(3)a·b=1B=275 (4)c/b=1……1101B(=13)5.设机器字长为 8 位,写出下列各数的原码和补码:(1)+1010101B (2)-1010101B (3)+1111111B (4)-1111111B (5)+1000000B (6)-1000000B 解:(1)+1010101B 原码01010101B 补码 01010101B(2)-1010101B 原码 B 补码 B(3)+1111111B 原码 01111111B 补码 01111111B(4)-1111111B 原码 B 补码 B(5)+1000000B 原码 01000000B 补码 01000000B(6)-1000000B 原码 B 补码 B6.已知 a=00111000B,b=B,计算下列逻辑运算:(1)a ANDb;(2)a OR b;(3)a XOR b;(4)NOT a;解:(1)00000000B(2)1B(3)1B(4)B7.求下列组合 BCD 数的二进制和十六进制表示形式:()(1)3251;(2)12907;(3)2006 解:(1)0011 0010 0101 0001B,3251H(2)0001 0010 1001 0000 0111 B , 12907H(3)0010 0000 0000 0110B , 2006H8.设下列四组为 8 位二进制补码表示的十六进制数,计算 a+b 和 a-b,并判定其结果是否溢出:(1)a=37H,b=57H;(2)a=0B7H,b=0D7H;(3)a=0F7H ,b=0D7H ;(4)a=37H ,b=0C7H 。
第一章1题(1)110=6EH=01101110B (2)1039=40FH =010*********B(3)0.75D=0.11B=0.CH (4)0.15625D=0.00101000B=0.28H2题(1)129 (0001 0010 1001)BCD注:在计算机汇编程序中BCD码只能用16进制数表示,形式为129H(2) 5678 (0101 0110 0111 1000) BCD(3) 0.984 (0.1001 1000 0100) BCD(4) 93.745 (1001 0011.011101000101) BCD3题(1) 10101010B=0AAH=170D (2)10000000B=80H=128D(3) 11000011.01B=0C3.4H=195.25 (4) 01111110B=7EH=126D4题(1)8E6H=100011100110B=2278 (2)0A42H=101001000010B=2626(3)7E.C5H=01111110.11000101B=126.769(4)0F19.1DH=111100011001.00011101B=3865.113285题(1)1011011.101B=91.625D BCD为(10010001.011000100101) BCD(2)1010110.001B=86.125D BCD为(10000110.000100100101) BCD6题(0010 0111 0011) BCD 表示的十进制数为273 二进制数为100010001B(1001 0111.0010 0101) BCD 表示的十进制数为97.25 二进制数为01100001.01B7题(1) (2) (3) (4)1001.11B 1101.01B 1000.011B 1111B+ 11.11B - 0110.11B - 1001.101B - 1101B1101.10B 0110.10B 0110.110B 0010B8题6AH AB1 FH 12ADH 117H+ A6H + 0 E FCH - 01DEH - 0ABH110H B A 1B H 10C F H 06 CH9题(1)无符号数X=01H =01D Y=0FFH=255(2)符号数X=01H =01D Y=0FFH= -1注:对于同一个数到底是符号数还是无符号数是由程序设计者根据数据实际的意义决定的,一旦定下来,在程序中采用不同的指令来区分符号数和无符号数,即算数运算指令会有符号数和无符号两套指令。
微机原理习题第一章绪论习题与答案1. 把下列二进制数转换成十进制数、十六进制数及BCD码形式。
(1)10110010B =(2)01011101.101B =解:(1)10110010B = 178D = B2H = (0001 0111 1000)BCD (2)01011101.101B = 93.625D = 5D.AH= (1001 0011.0110 0010 0101)BCD2. 把下列十进制数转换成二进制数。
(1)100D =(2)1000D =(3)67.21D =解:(1) 100D = 01100100B(2) 1000D = 1111101000B(3)67.21D = 1000011.0011B3. 把下列十六进制数转换成十进制数、二进制数。
(1) 2B5H =(2) 4CD.A5H =解:(1)2B5H = 693D = 0010 1011 0101B(2)4CD.A5H = 1229.6445D = 0100 1100 1101.1010 0101 B4. 计算下列各式。
(1)A7H+B8H =(2)E4H-A6H =解:(1)A7H+B8H = 15FH(2)E4H-A6H = 3EH5. 写出下列十进制数的原码、反码和补码。
(1)+89(2)-37解:(1)[+89 ] 原码、反码和补码为: 01011001B(2)[-37] 原码= 10100101 B[-37] 反码= 11011010 B[-37] 补码= 11011011 B6.求下列用二进制补码表示的十进制数(1)(01001101)补=(2)(10110101)补=解:(1)(01001101)补= 77D(2)(10110101)补= -75D7.请用8位二进制数写出下列字符带奇校验的ASCII码。
(1)C:1000011 (2)O:1001111(3)M:1001101 (4)P:1010000解:(1)C:0 1000011 (2)O:0 1001111(3)M:1 1001101 (4)P:1 10100008.请用8位二进制数写出下列字符带偶校验的ASCII码。
微机原理与接口技术第一章绪论1.2①[+65]10=01000001B [+65]补=[+65]原=01000001B②[+115]10=01110011B [+115]补=[+115]原=01110011B③[-65]10=11000001B [-65]补=10111111B[-115]10=11110011B [-115]补=10001101B方法:正数的原码、反码、补码相同负数的补码在原码的基础上除过符号外,先取反,再加1.1.3①[+120]10=0000000001111000B [+120]补=[+120]原=000000001111000B②[-120]10补③[+230]10=0000000011100110B [+230]补=[+230]原=0000000011100110B④[-230]10补方法:与上题相同,只是扩展了位数,用16位表示1.4①55 〔00110111〕②89 〔01011001〕③-115 〔11110011〕④-7总结:知道补码,求原码<或数值>的方法:如果是正数,直接转换.如果是负数用以下三种方法:①根据[[X]补]补=X 求得例如10001101 各位取反11110010 加一11110011转换-115②求补的逆运算例如:11111001 先减一11111000 各位取反10000111 转换-7③-<模+补码转换结果>例如:10001101转换-13模+补码转换结果128-13=115 加负号–1151.9本题问题不太明确例如:如果手边有手册或是知道产品的型号,就可从手册中查到微处理器的处理位数.也可以根据系统总线得知.因为系统总线是公共的数据通道,表现为数据传输位数和总线工作时钟频率.第二章intel 8086 微处理器2.2 75422H 字节单元:9CH 字单元:249CH75424H 字节单元:5DH 字单元:0E65Dh我们可以看到不同段的段地址,在不同的偏移地址下,可以对应相同的物理地址,也就相同的存储空间.说明在分配段时是重叠的.2.4 每个段区最大可占用64KB的地址范围,因为寄存器都是16位的,216B=64KB.不允许重叠,则最多可分16个段区,因为8086CPU有20条地址线,寻址范围1MB,1MB/64KB=16个.2.7①源操作数是立即数寻址,AX=1200H②源操作数是寄存器寻址,AX=BX=0100H③源操作数是直接寻址,将2000H×10H+1200H=21200H和21201H的内容取出,赋给AX=4C2AH④源操作数是寄存器间接寻址,将2000H×10H+0100H=20100H和20101H的内容取出,赋给AX=3412H⑤源操作数是寄存器相对寻址,将2000H×10H+0100H+1100H=21200H和21201H的内容取出,赋给AX=4C2AH⑥源操作数是基址变址寻址,将2000H×10H+0100H+0002H=201002和201003H的内容取出,赋给AX=7856H⑦源操作数是基址变址相对寻址, 将2000H×10H+0100H+0002H+1100H=21202H和21203H的的内容取出,赋给AX=65B7H2.92.102.110110 0010 1010 0000B+ 1001 1101 0110 0000B1 0000 0000 0000 0000B <0000H> AF=0,SF=0,ZF=1,CF=1,OF=0,PF=10110 0010 1010 0000B+ 0100 0011 0010 0001B1010 0101 1100 0001B <0A5C1H> AF=0,SF=1,ZF=0,CF=0,OF=1,PF=0 2.120001 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=01001 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=12.13①BX=009AH②BX=0061H③BX=00FBH④BX=001CH⑤BX=0000H⑥BX=00E3H <本条语句只对标志位有影响,不存贮结果>2.14BX=0110 1101 0001 0110=6D16HBX=0000 0000 1101 1010=00DAH2.15①DX=0000 0000 1011 1001 DX= 0000 0000 0101 1100=005CH②DX=0000 0000 1011 1001 DX= 0000 0000 0001 0111=0017H③DX=0000 0000 1011 1001 DX= 0000 0101 1100 1000=05C8H④DL= 1011 1001 DX=0000 0000 0111 0010=0072H⑤DX=0000 0000 1011 1001 DX=0010 0000 0001 0111=2017H⑥DL= 1011 1001DX= 0000 0000 11001101=00CDH⑦DH=0000 0000 DX=0000 0000 1011 1001=00B9H⑧DX=0000 0000 1011 1001DX=0000010111001100=05CCH CF=0⑨DL= 1011 1001DL=0000 0000 11011100=00DCH CF=12.16方法一: 循环移位方法二:逻辑右移MOV CL,04H MOV CL,04HROL AL,CL SHR AL,CL第三章宏汇编语言程序设计3.11〕AX=0001H;2〕AX=0002H3〕CX=0014H4〕DX=0028H5〕CX=0001H3.21〕ARRAY DB 56H,78,0B3H,1002〕DA TA 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 EXAMPE’6〕COUNT EQU 1003.3<1> <2>3.4DA TA_SEG SEGMENTDA TA1 DB ‘DATA SEG,MENT ’ DA TA2 DB 72,65,-10 DA TA3 DB 109,98,21,40 DA TA4 DB 10 DUP<0> DA TA5 DB ‘12345’DA TA6 DW 7,9,298,1967 DA TA7 DW 785,13475DA TA8 DW DB <$-DA TA6>-<DA TA6-DA TA1> DA TA_SEG ENDS 3.51〕 MOV BX, OFFSET BUF12> MOV CL BYTE PTR [BUF2+2] 3> MOV [BUF3+9], A6H4> COUNT EQU BUF3-BUF1 3.8DA TA_SEG SEGMENTAPPAY DB 10 DUP <29H> ALPHA DB -25,4,10,76,3 BUFFER DB 100 DUP<?> DA TA_SEG ENDS 3.9DA TA_SEG SEGMENTBCD1 DB ?,? BCD2 DB ? DA TA_SEG ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA_SEG,ES:DA TA_SEG START: MOV AX,DA TA_SEGMOV DS,AXMOV DS,AXMOV CL, 04HMOV SI, OFFSET BCD1MOV AL, [SI]SAL AL,CLMOV BL,[SI+1]AND BL,0FHADD AL,BLMOV BCD2,ALMOV AH,4CHINT 21HCODE ENDSEND START3.111> MOV CH, 32H CH=32H2> ADD CH, 2AH CH=5CH3> SHL CH, 1 CH=0B8H4> MOV [BX][NUM+9],CH CH=0B8H3.12DA TA_SEG SEGMENTX DB ?Y DB ?W DB ?Z DB ?R DB ?DA TA_SEG ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA_SEG,ES:DA TA_SEG START: MOV AX,DA TA_SEGMOV DS,AXMOV DS,AXMOV AL, WSUB AL, XCBWIDIV 0AHMOV R, AHIMUL YIMUL AXMOV AH, 4CHINT 21HCODE ENDSEND START3.14DA TA_SEG SEGMENTSTR1 DB 'THIS IS A DOG'STR2 DB 'THIS IS A COCK'COUNT DB $-STR2NUM DB ?DA TA_SEG ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA_SEG,ES:DA TA_SEG START: 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.16DATA SEGMENTSRCBUF DB 80 DUP〔?〕DSTBUF DB 80 DUP〔?〕DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START:MOV AX,DA TAMOV DS, AXMOV SI, OFFSET SRCBUFMOV DI, OFFSET DSTBUFMOV CX, 80LOP1:MOV AL,[SI]INC SICMP AL,ODHJE NEXTMOV [DI],ALINC DINEXT:LOOP LOP1MOV AH,4CHINT 21HCODE ENDSEND START3.17DATA SEGMENTBUF DB n DUP <?>SUM DB ODATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV CX, nMOV SI, OFFSET BUFLOP1: MOV AL, [SI]INC SICMP AL,OJGE NEXTINC SUMNEXT: LOOP LOP1MOV AH, 4CHINT 21HCODE ENDSEND STARTDATA SEGMENTBUF DW n DUP<?>BUF1 DW n DUP<?>BUF2 DW n DUP<?>DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TASTART: MOV AX, DATAMOV DS, AXMOV CX, nMOV SI, OFFSET BUFMOV DI, OFFSET BUF1MOV BX, OFFSET BUF2 LOP1: MOV AX, [SI]INC SIINC SICMP AX, 0000HJGE NEXT1MOV [BX], AXADD BX, 02HJMP LOP2NEXT1: MOV [DI], AXADD DI, 2LOP2: LOOP LOP1MOV AH, 4CHINT 21HCODE ENDSEND START3.19STACK SEGMENT STACKDB 256 DUP〔?〕STACK ENDSDATA SEGMENTBUF DB ‘This is a string’,’$’DA TA ENDSCODE SEGMENTASSUME CS:CODE. DS:DA TA; SS:STACKSTART: MOV AX, DA TAMOV DS, AXMOV SI,OFFSET BUF TACKCHAR: MOV DL,[SI]CMP DL,’$’JZ DONECMP DL,’a’NEXTSUB DL,20HNEXT:MOV AH,02HINT 21HINC SIMP TAKECHARDONE: MOV AH,4CHINT 21HCODE ENDSEND START3.20DA TA_SEG SEGMENTDA TX DB ?DA TY DB ?DA TZ DB ?DA TA_SEG ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA_SEG START: MOV AX,DA TA_SEGMOV DS,AXMOV AL,DATXMOV BL,DATYCMP AL,BLJS NEXTMOV DATZ,ALJMP DONENEXT: MOV DA TZ,BLDONE: MOV AH,4CHINT 21HCODE ENDSEND START3.21DATA_SEG SEGMENTDATA DB ?DATB DB ?DATC DB ?DATD DB ?DATA_SEG ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA_SEGSTART: MOV AX,DA TA_SEGMOV DS,AXCMP DA TA,0JZ NEXTCMP DATB,0JZ NEXTCMP DATC,0JZ NEXTMOV AL,DA TAADD AL,DA TBADC AL,DA TCMOV DATD,ALJMP DONENEXT: MOV DA TA,0MOV DATB,0MOV DATC,0DONE: MOV AH,4CHINT 21HCODE ENDSEND START3.22 程序段是将十六进制数的ASSII码转化为十六进制数.本例是将大写字母A的ASCII 变为十六进制数,将结果存入字符变量HEXNUM中.HEXNUM变量中原来的内容未知,程序段执行后的内容是字符A的十六进制数0A3.24DA TA_SEG SEGMENTN=10DA TA1 DB N DUP<?>DA TA2 DB N DUP<?>ADR1 DW ?ADR2 DW ?DATA_SEG ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA_SEGSTART: MOV AX,DA TA_SEGMOV DS,AXLEA SI, DA TA1LEA DI,DA TA2MOV CX, NLOP1: MOV AH,[SI]CMP AH,[DI]JNZ NOTEQUINC SIINC DILOOP LOP1MOV AH,0FFHSAHFJMP DONENOTEQU: MOV AH,0SAHFMOV ADR1,[SI]MOV ADR2,[DI]DONE:MOV AH,4CHINT 21HCODE ENDSEND START3.26DA TA_SEG SEGMENTCOUNT=100BUF DB COUNT NUP<?>MAX DB ?DA TA_SEG ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA_SEGSTART: MOV AX, DA TA_SEGMOV DS, AXMOV SI, OFFSET BUFMOV CX,COUNTLOP1:MOV AH,1INT 21HMOV [SI], ALINC SILOOP LOP1MOV SI,OFFSET BUFMOV CX,COUNTMOV AL, [SI]LOP2:CMP AL, [SI+1]JA NEXT2XCHG AL,[SI+1]INC SINEXT2:LOOP LOP2MOV MAX,ALMOV AH, 4CHINT 21HCODE ENDSEND START3.27DA TA_SEG SEGMENTBUF 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 ?DA TA_SEG ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA_SEGSTART: MOV AX, DA TA_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,OFFSET BUFMOV CX,9MOV AL, [SI]LOP2:CMP AL, [SI+1]JA NEXT2XCHG AL,[SI+1]INC SINEXT2:LOOP LOP2MOV MAX,ALMOV SI,OFFSET BUFMOV CX,9MOV AL, [SI]LOP3:CMP AL, [SI+1]NEXT3XCHG AL,[SI+1]INC SINEXT3:LOOP LOP3MOV MIN,ALMOV AH,4CHINT 21HCODE ENDSEND START3.28DA TA SEGMENTBUFF DB 10 DUP<?>DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA START: MOV AX,DATAMOV DS,AXMOV SI , OFFSET BUFFMOV CX,0AHLOP1:MOV AH,7INT 21HCMP AL,'$'JZ DONENEXT1 :CMP AL,'a'JGE NEXT2CMP AL,'z'JGE DONEJMP SHOWNEXT2:SUB AL,20HSHOW:MOV DL,ALMOV AH,2INT 21HLOOP LOP1DONE:MOV AH,4CHINT 21HCODE ENDSEND START3.29DA TA SEGMENTSTRBUF DB 'ABCDEFGIJKLMN$OPQRSTUVWSXYZ'COUNT DB $-STRBUFADRBUF DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DA TAMOV DS, AXLEA SI, STRBUFMOV CH,0MOV CL,COUNTLOP1: MOV AL, [SI]CMP AL,'$'JZ DONEINC SILOOP LOP1DONE: MOV ADRBUF,ALMOV AH,4CHINT 21HCODE ENDSEND START3.30STACK SEGMENT STACKDW 256 DUP<?>TOP LABEL WORDSTACK ENDSDA TA SEGMENTBUFF DB 1,2,3,4,5,6,7,8SUM DW 0000HDA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,OFFSET TOPMOV CH,0MOV CL,8LOP1:MOV SI,OFFSET BUFFMOV AX,OFFSET SUMPUSH AXMOV AH,0MOV AL, [SI]PUSH AXCALL FAR PTR FACTMOV DX,SUMADD SUM,DXINC SILOOP LOP1MOV AH,4CHINT 21HCODE ENDSCODES SEGMENTASSUME CS:CODES FACT PROC FARPUSH BPMOV BP,SPPUSH BXPUSH AXMOV BX,[BP+8]MOV AX,[BP+6]CMP AX,0JE DONEPUSH BXDEC AXPUSH AXCALL FACTMOV BX,[BP+8]MOV AX,[BX]MUL WORD PTR [BP+6]JMP RETURNDONE: MOV AX,01H RETURN:MOV [BX],AXPOP AXPOP BXPOP BPRET 4FACT ENDPCODES ENDSEND START第五章半导体存储器5.11> Intel 1024<1K ×1位> :118128⨯⨯=1024〔片〕2〕 Intel 2114〔1K ×4位〕:418128⨯⨯=256〔片〕3〕 Intel 2128〔2K ×8位〕:828128⨯⨯=64〔片〕4〕 Intel 2167〔16K ×1位〕:1648128⨯⨯=16〔片〕 5.21〕11816⨯⨯K K =128<片> 2〕1K=210 ⇒ 有十条用作片内寻址3〕16K=214⇒ 14-10=4,有四条用作片间寻址6.5答:1〕程序控制方式2〕中断控制方式3〕直接存储访问〔DMA 〕方式区别:程序控制方式和中断控制方式都是采用软件形式,实现CPU 与外设的数据传送,都要占用CPU 的宝贵时间.DMA 方式则是一种由硬件实现的数据传送方式,无需占用CPU 的时间就可实现数据高速传送.6.86.11INPUT PROC NEARMOV CX,80HLEA DI,BUFFPOLL:IN AL,29H TEST AL,01HJNZ POLLIN AL ,28H第七章中断系统7.5中断向量表<SS>=0300H<IP>=0040H<CS>=0100H<FLAGS>=0040H7.6方法一:直接置入法PUSH DSMOV AX,0MOV DS,AXMOV BX,36LEA AX,INT_POUTMOV [BX],AXMOV AX,SEG INT_POUTMOV[BX+2],AXPOP DS方法二:dos功能调用PUSH DSMOV AX,SEG INT_OUTMOV DS,AXLEA DX,INT_OUTMOV AX,2509HINT 21HPOP DS7.9主程序段: PUSH DSMOV AX, SEG TRANINTMOV DS,AXLEA DX, TRANINTMOV AX,2579HINT 21HPOP DSMOV SI,OFFSET ASCNUMMOV CX,NUMBMOV DI,OFFSET BCDMMTRANINT: MOV AL,[SI]AND AL,0FHMOV [DI],ALINC DIINC SIIRET7.10MOV DX, 02C0HMOV AL,1BHOUT DX,AL ;ICW1MOV DX, 02C1HMOV AL,10HOUT DX,AL ;ICW2MOV DX, 02C1HMOV AL,0DHOUT DX,AL ;ICW47.11 此题根据OCW3的设置来决定…..….. 以上包括初始化8259的部分IN AL,51HMOV [REG-ARR],AL ;读IMR的内容并存储IN AL,50HMOV AL,00001010B ;读取OCW3的内容,并进行设置OUT 50H,ALIN AL,50HMOV [REG-ARR+1] ,AL ;读取IRR的内容并存储IN AL,50H ;读取OCW3的内容,并进行设置MOV AL,00001011BOUT 50H,ALIN AL,50HMOV [REG-ARR+2],AL ;读取ISR的内容并存储…..7.12设置中断向量表:PUSH DSMOV AX,0 ;中断向量表段地址送入DSMOV DS,AXMOV BX,3500H ;中断向量地址送入BXMOV AX,OFFSET IRQ0 ;中断向量填入中断向量表MOV [BX],AXMOV AX,SEG IRQ0MOV [BX+2],AXPOP DS<其他四个中断向量地址分别设为4080H、4505H、5540H、6000H,向量名改为相应的即可,在此省略>初始化8259A:MOV AL,13H ;ICW1OUT 20H,ALMOV AL,4BH ;ICW2〔IRQ0的中断类型码为4BH〕OUT 21H,ALMOV AL,01H ;ICW4OUT 21H,AL7.16DA TA SEGMENTBUF DB 256 DUP<?>DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:,MOV DX,DATAMOV DS,AXPUSH DSMOV AX,SEG INTPRMOV DS,AXLEA DX,INTPRMOV AX,250AHINT 21HPOP DS ;用dos功能调用,设置中断向量MOV DX,21HIN AL,DXAND AL,0FBH ;开放IRQ2中断OUT DX,ALSTIHLTMOV DX,21HIN AL,DX0R AL,04HOUT DX,AL ;关闭IRQ2中断MOV AH,4CHINT 21H;中断服务程序INTPR: PUSH CXMOV CX,8MOV DL,0MOV DX,200HIN AL,DXMOV BL,ALLOP: RCL BL,1JCZ NEXTLOOP LOP ;计算1的个数NEXT: INC DLCMP DL MOD 2,0 ;判断1的个数是奇数还是偶数JNZ DISPMOV DX,201HOUT DX,ALDISP:MOV DL,’N’MOV AH,02HINT 21HMOV AL,20HOUT 20H,AL ;中断结束IRET第八章常用接口芯片8.1①MOV AL,10011001MOV DX,0063HOUT DX,AL②MOV AL,11000000MOV DX,0063HOUT DX,AL③MOV AL,10110110MOV DX,0063HOUT DX,AL8.2 A9 A8 A7 A6 A5 A4 A3 A2 A1 A00 0 0 1 1 ×××0 0 A口地址060H0 0 0 1 1 ×××0 1 B口地址061H0 0 0 1 1 ××× 1 0 C口地址062H0 0 0 1 1 ××× 1 1 控制字地址063H 8.3注意:下面是课件P95页题目和图形,其中的口地址可通过一个138译码器获得主程序段:MOV CX,100;MOV SI,OFFSET BUFF;MOV AL,10000001B;控制字,A组方式0,OUT 0EFH,AL;PA口输出,PC口高4位输出,低4位输入MOV AL,00001100B;置PC6为1OUT 0EFH,AL;LOP:IN AL,0EEH;读打印机状态TESTAL,04H;测试PC2〔D2〕位JNZ LOP;打印机忙,继续测试MOV AL,[SI];打印机闲,输出1个字符OUT 0ECH,AL;MOV AL,00001100B;使PC6产生选通脉冲OUT 0EFH,AL;INC AL;OUT 0EFH,AL;INC SI;修改地址指针LOOP LOP8.6<1>注意:本题图只是示意的将地址按照要求画出来了,其余的引脚没有画出计数器0工作于方式3,2000000/10000 =200〔H〕为初值N计数器1工作于方式2,N=10000〔H〕计数器2工作于方式2,N=10<H>MOV AL,00010111B;计数器0工作于方式3,读低MOV DX,0DODFHOUT DX,AL;MOV AL,200H;MOV DX, 0DODCHOUT DX,ALMOV AL,01010101B;计数器1工作于方式2,读低,MOV DX,0DODFHOUT DX,AL;MOV AX,10000H;MOV DX,0DODDHOUT DX,ALMOV AL,AHMOV DX,ALMOV AL,10010101B;计数器2工作于方式2,读低,MOV DX,0DODFHOUT DX,AL;MOV DX ,0ODODCMOV AL,10HOUT DX,AL<2>计数器0工作在主程序段:MOV AL,00010111B;置计数器0方式,MOV DX,0D0DFHOUT DX,AL;MOV AL,40H;装初值MOV DX,0D0DCHOUT DX,AL;MOV AL,00H;关8255的PC0OUT 63H,AL;MOV AL,01010110;置计数器1方式MOV AL,40H;装初值MOV DX,0D0DDHOUT DX,AL;STI;LOP:HLT;JMP LOP;中断服务程序:INTP:MOV AL,01H;开8255的PC0OUT 63H,AL;CALL DLY5S;调5S延迟子程序MOV AL,01H;关8255的PC0OUT 63H,AL;IRET;8.7在时钟频率是2MHZ的条件下一个计数器可以完成的最大定时是65536/5/1000000可以通过级连实现,参考课件的内容.8.9START:,MOV DX,DATAMOV DS,AXPUSH DSMOV AX,SEG INTPRMOV DS,AXLEA DX,INTPRMOV AX,250AHINT 21HPOP DS ;中断向量表的设置,用dos功能调用设置MOV AL,00011000B<14h>;置计数器0方式,方式四,低八位,二进制计数MOV DX,0233HOUT DX,AL;MOVAL,00H;装初值MOV DX,0230HOUT DX,AL;MOV AL,01011000<54h>;置计数器1方式, 方式四,低八位,二进制计数MOV DX,0233HOUT DX,ALMOV AL,40H<任意允许值>;装初值MOV DX,0231HOUT DX,AL;IN AL,21HAND AL.0FBH ;开放IRQ2中断STI;LOP:HLT;JMP LOP;8.13延时时间是0.1/200=0.5msAUB:MOV DX,PORT0MOV AL,00HLOP1:OUT DX,ALCALL DL Y0.5MSINC ALCMP AL,0FFHJZ LOP2JMP LOP1 ;输出三角波向上的部分LOP2: OUT DX,ALCALL DL Y0.5MSDEC ALCMP AL,00HJZ LOP1JMP LOP1 ;输出三角波向下的部分RETDL Y0.5MS: MOV CX,DA TA1LOP3:NOPJMP LOP3RET ;延迟0.5秒8.16DA TA SEGMENTBUF DB ?DA TA ENDS ;数据段定义CODE SEGMENTASSUME:CS:CODE,DS:DATASTART:,MOV DX,DATAMOV DS,AXPUSH DSMOV AX,SEG INTPRMOV DS,AXLEA DX,INTPRMOV AX,250AHINT 21HPOP DS ;以上为程序初始化,不包括8259的初始部分MOV DX,021HIN AL,DXAND AL,11111011OUT DX,AL ;开放IRQ2中断STIMOV AL,05HMOV DX,084HOUT DX,AL ;启动0809HLT ;等待中断IN AL,21HOR AL,04HOUT 21H,21H ;关8259中断CLI ;关CPU中断MOV AH,4CHINT 21H;中断服务程序ADINT PROC NEARIN AL,DXMOV BUF,AL MOV AL,20HOUT 20H, ALIRETADINT ENDPCODE ENDS END START。