微机原理第4章作业答案
微机原理作业与答案第四章
微机原理作业与答案第四章第四章汇编语⾔程序设计4-2 下列程序执⾏后,寄存器AX,BX,CX的内容分别是多少?ORG 0202HDA_WORD DW 20HMOV AX,DA_WORD ;(AX)=0020HMOV BX,OFFSET DA_WORD ;(BX)=0202H (BX)=0,这是书中的参考答案MOV CL,BYTE PTR DA_WORD ;(CL)=20H(因PTR,则字的第⼀字节)MOV CH,TYPE DA_WORD ;(CH)=2(变量类型数值);(CX)=0220H4-4 试编制⼀程序(不是程序段),把CHAR1中各⼩写字母分别转换为对应的⼤写字母,并存放在CHAR2开始的单元中DDD0 SEGMENTCHAR1 DB ‘abcdef’N EQU $-CHAR1;变量必须先定义后使⽤,⽽不能相反CHAR2 DB N DUP(0);不能把此句与上⼀句对调DDD0 ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDS ;P126(代码段和堆栈段是不可少的)CSEG SEGMENTASSUME CS:CSEG,DS:DDD0,SS:STACK START: MOV AX,DDD0 MOV DS,AX ;MOV DX,AXMOV ES,AX ;只要SI,DI都⽤MOV SI,0 ;LEA SI,CHAR1MOV DI,0 ;LEA DI,CHAR2MOV CX,NAGAIN: MOV AL,CHAR1[SI] ; MOV AL,[SI]SUB AL,20HMOV CHAR2[DI],AL ; MOV [DI],ALMOV DL,AL ;不是必须的,但做实验是有⽤的。
MOV AH,2INC SIINC DI LOOP AGAINMOV AH,4CHINT 21H ;不是必须的CSEG ENDSEND START第⼆种⽅法:DDD0 SEGMENTCHAR1 DB ‘abcdef’N EQU $-CHAR1CHAR2 DB N DUP(0) DDD0 ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDS ;P126(代码段和堆栈段是不可少的)CSEG SEGMENTASSUME CS:CSEG,DS:DDD0,SS:STACKSTART: MOV AX,DDD0 MOV DS,AXMOV ES,AXLEA SI,CHAR1LEA DI,CHAR2MOV CX,NCLD ;不写(隐含)也是0(递增)但不能STDAGAIN: LODSB ;执⾏⼀次,隐含修改SISUB AL,32stosb ;MOV [DI],AL;执⾏⼀次, 隐含修改DInop ;INC DILOOP AGAIN ;LOOP指令只修改CX,不管SI,DIMOV AH,4CHINT 21H ;不是必须的CSEG ENDSEND START4-6在BUF地址处起,存放有100个字节的字符串,设其中有⼀个以上的“A”字符,编程查找出第⼀个“A”字符相对起始地址的距离,并将其存⼊LEN单元。
微机原理作业与答案第四章1
第四章汇编语言程序设计4-2下列程序执行后,寄存器AX BX CX的内容分别是多少?D SEGMENAT 0202H;定位数据段地址ORG 0202H ;定位偏移地址DA_WORD DW 20HMOV AX,DA_WORD ;(AX)=0020HMOV BX,OFFSET DA_WORD ;(BX)=0202HMOV CL,BYTE PTR DA_WORD ;(CL)=20H将变量DA_WOR的属性改变为字节型) MOVCH,TYPE DA_WORD ;(CH)=2( 变量类型数值);( CX)=0220H4-4试编制一程序,把CHAR中各小写字母分别转换为对应的大写字母,并存放在CHAR 开始的单元中(题目要求:不改变CHAR的内容)方法1,小写字母转换一个输出显示一个,前3种方法均使用了AL寄存器D SEGMENTCHAR1 DB "abcdefghijklmnopqrstuvwxyz"N EQU $-CHAR1 ; 变量必须先定义后使用,而不能相反CHAR2 DB N DUP(0);; 不能把此句与上一句对调,CHAR2 DB $-CHAR t ; 的同学这样写,错在哪?CHAR2DB$-CHAR1DUP(0) 是可以的D ENDSS SEGMENT STACKDB 200 DUP(0)S ENDSC SEGMENTASSUME CS:C,DS:D,SS:S ;ASSUM是伪指令,后面不能写冒号START: MOV AX,DMOV DS,AX;MOV ES,AX ; 只要用到串操作指令且DILEA SI,CHAR1 ;MOV SI,OFFSET CHAR1LEA DI,CHAR2 ; MOV DI,OFFSET CHAR2 MOV CXN, ;$-CHAR1, 不可以AGAIN:MOV AL,[SI]SUB AL,20H ; AND AL,5FH 有的同学是这样实现的MOV [DI],ALMOV DL,ALMOV AH,2INT 21H ; 从屏幕显示INC SIINC DILOOP AGAINMOV AH,4CHINT 21H ; ; 不是必须的C ENDSEND START方法2:使用通用数据传送指令MOVD SEGMENTCHAR1 DB ‘abcdefghijklmnopqrstuvwxyz 'N EQU $-CHAR1 ; 变量必须先定义后使用, 而不能相反CHAR2 DB N DUP(0); 不能把此句与上一句对调D ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDS ;P126( 代码段和堆栈段是不可少的) C SEGMENTASSUME CS:C ,DS:D ,SS:SSTART: MOV AX,DMOV DS,AXMOV ES,AX ; 只要用到串操作指令且DIMOV SI,0 ;LEA SI,CHAR1MOV DI,0 ;LEA DI,CHAR2MOV CX,NAGAIN: MOV AL,CHAR1[SI] ; MOV AL,[SI] SUB AL,20HMOV CHAR2[DI],AL ; MOV [DI],ALINC SIINC DILOOP AGAINMOV AH,4CHINT 21H ; 不是必须的C ENDSEND START第3 种方法: 使用串的读写指令LODSB STOSB D SEGMENTCHAR1 DB ‘abcdef 'N EQU $-CHAR1CHAR2 DB $-CHAR1 DUP(0)D ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDS ;P126( 代码段和堆栈段是不可少的) C SEGMENTASSUME CS:C,DS:D,SS:SSTART: MOV AX,DMOV DS,AXMOV ES,AXMOV SI,0 ;LEA SI,CHAR1MOV DI,0 ;LEA DI,CHAR2MOV CX,NCLD ; 不写( 隐含)也是0(递增)但不能STD AGAIN: LODSB ;执行一次, 隐含修改SISUB AL,32STOSB ;MOV [DI],AL ; 执行一次, 隐含修改DI INC DILOOP AGAIN ;LOOP指令只修改ex,不管SI,DIMOV AH,4CH iNT 21H ; 不是必须的e ENDsEND sTART 第四种方法2006级,没有显示使用MOVS指令D sEGMENTeHAR1 DB "abcdefghijklmnopqrstuvwxyz"N EQU $-eHAR1 eHAR2 DB N DUP(0) D ENDSS SEGMENT STAeK DB 200 DUP(0)S ENDS e SEGMENTASSUME eS:e,DS:D,SS:SSTART:MOV Ax,DMOV DS,AxMOV ES,AxLEA Si,eHAR1LEA Di,eHAR2MOV ex,NAGAiN:MOVSB ; SUB [Si],20HDEe Di ; MOVSBSUB BYTEPTR[Di],20H ;LOOP AGAiN 错在哪里?结果如何?iNeDiLOOP AGAiNMOV AH,4eH iNT 21H e ENDSEND START 方法5: 只用一个地址指针SiD SEGMENTeHAR1 DB "abcdefghijklmnopqrstuvwxyz"N EQU $-eHAR1 eHAR2 DB N DUP(0) D ENDSS SEGMENT STAeKDB 200 DUP(0)S ENDS e SEGMENTASSUME CS:C,DS:D,SS:SSTART:MOV AX,DMOV DS,AXMOV ES,AXMOV SI,0MOV CX,NAGAINMOV AL,CHAR1[SI];只用一个地址指针,SI[CHAR1]是错误的SUB AL,20HMOV CHAR2[SI],ALINC SILOOP AGAINint 3MOV AH,4CHINT 21HC ENDSEND START有的同学按数据是由键盘录入的来考虑的,也可行,程序中还有不少问题方法6:由键盘输入小写字母再转换输出, 回车符也占一个字节,输入需要小写转换成大写字母的内容从输入串的第3 个元素开始D SEGMENTA DB"CHAR1",0DH,0AH,"$"B DB"CHAR2",0DH,0AH,"$"CHAR1 DB 11,?,11 DUP(0); 准备输入1 0个小写字母CHAR2 DB 10 DUP(0)D ENDSS SEGMENT STACKDB 200 DUP(0)S ENDSC SEGMENTASSUME CS:C,DS:D,SS:SSTART:MOV AX,DMOV DS,AXMOV ES,AXMOV DX,OFFSET AMOV AH,9INT 21HLEA DX,CHAR1MOV AH,0AHINT 21H ; 由键盘输入字符串,1 0个字母(显示) , 1 个回车,共11 个字节LEA SI,CHAR1[2]LEA DI,CHAR2MOV CX,10 ; 需要转换的字符长度为10 个字节AGAIN:MOV AL,[SI]SUB AL,20HMOV [DI],ALINC SIINC DILOOP AGAIN ; 将小写字母字符串转换成大写字母字符串MOV BYTE PTR[DI],0DHINC DIMOV BYTE PTR[DI],0AHINC DIMOV BYTE PTR[DI],'$' ; 必须指明数据类型MOV DX,OFFSET CHAR2MOV AH,9INT 21H ; 输出'$' 结尾的大写字母字符串int 3MOV AH,4CHINT 21HC ENDS END START4-6在BUF地址处起,存放有100个字节的字符串,设其中有一个以上的“ A字符,编程查找出第一个“ A”字符相对起始地址的距离,并将其存入LEN单元。
单片机微型计算机原理及接口技术课后习题答案第4章
单片机微型计算机原理及接口技术课后习题答案第4章4-2 试述指令MOV A,R0和MOV A,@R0的区别两条指令的目的操作数相同,两条指令的区别在于源操作数来源不同:MOV A,R0 指令的源操作数就是R0寄存器的内容;而MOV A,@R0 指令的源操作数是位于存储器单元内,且存储器单元的地址是R0寄存器的内容。
4-3 试述指令MOV A,20H和MOV A,#20H的区别MOV A,20H 源操作数是直接寻址,20H表示源操作数所在存储器单元的地址。
MOV A,#20H 源操作数是立即数寻址,#20H是立即数,也就是源操作数。
4-4 说明一下指令中源操作数所在的存储器类型。
(1)MOV A,#30H; 立即数#30H,就是源操作数,存在于指令中,所以位于程序存储器。
(2)MOV A,30H; 30H是源操作数所在数据存储单元的地址,所以源操作数位于数据存储器。
(3)MOVC A,@A+DPTR;源操作数是变址寻址, 助记符MOVC表示源操作数位于程序存储器。
(4)MOVX A,@DPTR; 源操作数是寄存器间接寻址, 助记符MOVX表示源操作数位于外部数据存储器。
4-5 判断下列指令书写是否正确:(1)MOV A,B; ✔(2)MOV A,#3000H ; ✘,因为A是8位寄存器,而#3000H是16位数值,没法全部存到A里(3)INC,#20H ; ✘只能INC A/direct/Rn/@Ri/DPTR(4)MOV 5,A ; ✔,注意目的操作数是直接寻址方式,不是立即寻址(5)MOV 30H,40H; ✔(6)MOV B,@DPTR ; ✘,@DPTR寻址用于MOVX指令,不能用于MOV指R(7)CJNE 30H,#80H,NEXT ; ✘,CJNE指令格式只能是CJNE A/Rn/@Ri,#data,rel或CJNE A,direct,rel(8)POP A ; ✘只能是直接寻址方式POP direct,正确的是POP ACC(9)PUSH ACC; ✔(10)SJMP 2000H ; ✘rel的范围是-128~127(用补码表示其值)共256B范围4-6 设ACC=12H,B=64H,SP=60H,30H中存放的是78H,试分析下列程序执行后,ACC、B、30H、SP中的内容分别为多少,并画出堆栈示意图。
微机原理第四章课后习题答案
第四章课后作业(6—27)6.试按下列要求分别编制程序段。
(1)把标志寄存器中符号位SF置“1”。
(2)寄存器AL中高、低四位互换。
(3)由寄存器AX、BX组成一个32位带符号数(AX中存放高16位),试求这个数的负数。
(4)现有三个字节存储单元A、B、C,在不使用ADD和ADC指令的情况下,实现(A)+(B) C。
(5)用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变,如原来是偶数,则(CX)+1 形成奇数)。
答:(1) LAHFOR AH,80HSAHF(2) MOV CL,4ROL AL,CL(3) MOV CX,0NEG BXJC CHGJMP GOCHG: MOV CX,1GO: NEG AXSUB AX,CX(4) MOV CL,AMOV AL,BMOV X,ALCHECK:INC XDEC CLJNZ CHECK(5) OR CX,0001H7.试给出下列各指令的机器目标代码。
(1)MOV BL,12H [SI](2)MOV 12H [SI],BL(3)SAL DX,1(4)AND 0ABH [BP] [DI],1234H答:(1)100010 1 0 01 011 100 00010010=8A5C12H(2)100010 0 0 01 011 100 00010010=885C12H(3)110100 0 1 11 100 010=0D1E2H(4)100000 0 1 10 100 011 10101011 00000000 00110100 00010010=81A3AB003412H8.执行下列指令:STR1 DW ‘AB’STR2 DB 16DUP(?)CNT EQU $-STR1MOV CX,CNTMOV AX,STR1HLT执行完成之后,寄存器CL的值是多少?寄存器AX的值是多少?答:因为CNT=16+2=18,所以CX=18=0012H,所以CL=12H=0001,0010;AX中装入的是‘AB’的ASCII码值,其中‘A’在高位AH中,‘B’在低位AL 中,所以AX=4142H=0100,0001,0100,0010。
微机原理及接口第四章习题答案
“微机系统原理与接口技术”第四章习题解答1.判断以下说法能否正确,若有错,请说明原由并更正。
(1)伪指令在汇编过程中不会产生二进制代码。
(2)宏和过程的同样之处是都可用于简化源程序书写、精简目标代码。
(3)在计算机中,高级语言往常需要变换为汇编语言后才能履行。
(4)汇编语言程序上机一般包含编写、汇编、链接和调试几个步骤。
答:( 1)正确。
(2)错误。
宏不可以精简目标代码。
(3)错误。
高级语言程序经编译或解说后直接变换为目标代码。
(4)正确。
2.已知数据和符号定义A1DB?A2DB8K1EQU 100判断以下指令的正误,并说明错误指令的原由。
(1) MOVK1, AX(2) MOVA2, AH(3) MOVBX, K1MOV [BX] , DX(4) CMPA1, A2( 5) K1EQU 200答:( 1)错误。
K1 是符号常数,在此处相当于立刻数100 ,故不可以做目的操作数。
(2)正确。
(3)正确。
(4)错误。
A1、 A2 都是字节变量,相当于两个储存器单元,故不可以同时出现在一条指令中直接进行比较。
( 5)错误。
用EQU定义的符号不可以从头赋值,除非已用PURGE排除了原值。
3.若数据段中有定义NUM1EQU 23HNUM2DW0则指令MOV NUM2, NUM1 的源、目操作数的寻址方式以及指令履行后NUM2+ 1 单元的内容分别是什么?答:指令 MOV NUM2,NUM1的源操作数使用立刻数寻址,目的操作数使用直接寻址。
指令履行后NUM2+ 1 单元的内容是0。
4.设 DS=6000H, BX=8432H,SS=5000H,SP=3258H,内存 69632H~ 69635H 单元的内容挨次是 00H、11H、22H、33H。
4 字节指令 CALL DWORDPTR[BX+1200H] 自己位于 2000H:3250H处的双字单元中。
当8086 履行该指令后转移至子程序进口时,CS、IP 、 SS、SP 各寄存器以及栈顶 2 个字单元的内容分别是多少?答:履行结果为CS=3322H,IP=1100H ,SS=5000H,SP=3254H,栈顶的两个字即断点地点,为2000H: 3254H。
微机原理与接口技术 第四章 课后答案
第四章参考答案1.设下列指令中的所有标识符均是类型属性为字的变量,请指出下列指令中哪些是非法的指令?错误的原因?⑴MOV BP,AL⑵MOV WORD_OP1,WORD_OP2⑶MOV SA VE_WODR,DS⑷MOV SP,SS:DA TA_WORD[BX][SI]⑸MOV [BX][SI],2解:(1)非法。
源操作数与目的操作数类型不符。
(2)合法。
(3)合法。
(4)合法。
(5)非法。
需说明操作数类型。
2.设V AR1和V AR2为字变量,LAB为标号,试指出下列指令的错误之处:⑴ADD V AR1,V AR2⑵SUB AL,V AR1⑶JMP LAB[SI]⑷JNZ V AR1⑸JMP NEAR LAB解:(1)两个操作数均为符号地址。
(2)两个操作数的类型不同。
(3)(4)(5)3.画图说明下列语句所分配的存储空间及初始化的数据值。
⑴BYTE_V AR DB ‘BYTE’,12,-12H,3 DUP(0,?,2 DUP(1,2),?)⑵WORD_V AR DW 5 DUP(0,1,2),?,-5 ‘BY’,’TE’,256H解:(1)(2)41H59H54H45H0CHF4H00H?01H02H01H02H00H?01H02H01H02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H ??FBH FFH 59H 42H 45H 54H 56H 02H4.设程序中的数据定义如下:PARTNO DW ?PNAME DB 16 DUP(?)COUNT DD ?PLENTH EQU $-PARTNO问PLENTH的值为多少?它表示什么意义?解:PLENTH的值为22(16H)。
表示当前位置与PARTNO之间有22个字节空间。
微机原理课后答案 (4)
微机原理课后答案第一章:计算机系统简介1.1 问题1.计算机硬件系统由哪些部分组成?2.什么是计算机软件系统?3.计算机的主要功能有哪些?1.2 答案1.计算机硬件系统由以下几部分组成:–中央处理器(CPU)–内存(Memory)–外部设备(包括输入设备和输出设备)2.计算机软件系统是指计算机系统中的各种软件程序的集合,包括系统软件和应用软件。
系统软件用于管理和控制计算机硬件系统的运行,例如操作系统、编译器、数据库管理系统等。
应用软件用于实现各种具体的应用功能,例如文字处理软件、图形设计软件、游戏等。
3.计算机的主要功能包括:–进行数据的输入、输出和存储。
–进行数据的处理和运算。
–运行各种软件程序,实现各种功能。
第二章:计算机的基本组成部分2.1 问题1.什么是计算机的存储器?2.什么是计算机的输入设备?3.什么是计算机的输出设备?2.2 答案1.计算机的存储器是指计算机中用于存储数据和程序的设备,包括主存储器和辅助存储器。
主存储器又称为内存,是计算机中用于存放程序和数据的临时存储区域,其容量相对较小但访问速度很快。
辅助存储器是用于永久性存储数据和程序的设备,例如硬盘、固态硬盘或者光盘。
2.计算机的输入设备是用于将外部数据或命令输入到计算机中的设备,常见的输入设备包括键盘、鼠标、扫描仪、摄像头等。
3.计算机的输出设备是用于将计算机处理后的结果或数据输出到外部的设备,常见的输出设备包括显示器、打印机、音频设备等。
第三章:计算机的运算方法3.1 问题1.什么是计算机的算术运算?2.什么是计算机的逻辑运算?3.什么是计算机的数据转移?3.2 答案1.计算机的算术运算是指计算机对数字数据进行加、减、乘、除等运算的过程。
算术运算包括整数运算和浮点数运算。
整数运算是指对整数进行计算的过程,浮点数运算是指对带有小数部分的实数进行计算的过程。
2.计算机的逻辑运算是指计算机对逻辑数据进行与、或、非等运算的过程。
逻辑运算常用于判断和决策的场景,例如判断某个条件是否为真、执行不同的分支等。
微机原理第4章练习题及答案
微机原理第4章练习题及答案第4章 80x86指令系统一、自测练习题㈠选择题 1.MOV AX,[BX+SI]的源操作数的物理地址是( )。
A.(DS)×16+(BX)+(SI) B. (ES)×16+(BX)+(SI) C.(SS)×10H+(BX)+(SI) D.(CS)×10H+(BX)+(SI)2.MOV AX,[BP+Sl]的源操作数的物理地址是( )。
A.(DS)×10H+(BP)+(SI) A. (ES)×16+(BP)+(SI) C.(SS)×16+(BP)+(SI) D.(CS)×10H+(BP)+(SI) 3.MOV AX,ES:[BX+SI]的源操作数的物理地址是( )。
A.(DS)×16+(BX)+SI) B.(ES)×10H+(BX)+(SI) C.(SS)×10H+(BX)+SI) D.(CS)×16+(BX)+(SI)4.JMP WORD PTR[DI]是( )。
A.段内间接转移B.段间间接转移C.段内直接转移D.段间直接转移5.JMP FAR PTR BlOCK(BLOCK是符号地址)是( )。
A.段内间接转移B.段间间接转移C..段内直接转移D.段间直接转移6.INC指令不影响( )标志。
A.OF B.CF C.SF D.ZF 7.条件转移指令JNE的测试条件是( )。
A.ZF=1 B.CF=0 C.ZF=0 D.CF=1 8.下列指令中,有语法错误的是( )。
A.MOV [SI],[DI] B.IN AL,DX C.JMP WORD PTR[BX+8] D.PUSH WORD PTR 20[BX+S1] 9.假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据21H的物理地址是。
A.20102H B.20101H C.200FEH D.200FFH 10.对于下列程序段:AGAIN:MOV AL,[SI] MOV ES:[DI],AL INC SI INC DI LOOP AGAIN 也可用指令完成同样的功能。
微机原理 第四章答案
15、设(DS)=C000H,(C0010H)=0180H, (C0012H)=2000H,执行LDS SI,[10H]后, (SI)=?, (DS)=? (SI)=0180 H,(DS)=2000 H
REP STOSW 程序段的功能:
将起始地址为0404 H开始的80 H(128)个字单元清成0 或将起始地址为0404 H开始的100 H(256)个字节单元清成0
11
第4章 微型计算机原理作业情况
13、 设(BX)=6B30H,(BP)=0200H,(SI)=0046H, (SS)=2F00H,(2F246H)=4154H,试求执行 XCHG BX,[BP+SI]后, (BX)=?,(2F246H)=? (BX)=4154H (2F246H)=6B30H
6
第4章 微型计算机原理作业情况
8、分别执行下列指令,试求AL的内容及各状态标志位的状态。
(1) MOV AL,19H ;
ADD AL,61H ;(AL)=7AH
OF=0 SF=0 ZF=0 AF=0 PF=0 CF=0
(2) MOV AL,19H ;
SUB AL,61
;(AL)=0DCH
OF=0 SF=1 ZF=0 AF=1 PF=0 CF=1
(1) MOV CL,20H[BX][SI] ;(CL)=0F6 H
(2) MOV [BP][DI],CX
;(1E4F6 H)=5678 H
(3) LEA BX,20H[BX][SI] ;(BX)=0056 H
MOV AX,2[BX]
;(AX)=1E40 H
微机原理作业及答案
LP LOOP __
MOV BYTE PTR SRLT, ___ BL
POP DX ____ POP AX ___
RET XHZY ENDP
1 RCL DX,__
一、二、三、四章
作业
第一章 作业
1、简述微型计算机的硬件系统结构,并说明其主要功能。 2、试利用一个字节的字长,将十进制-115转换为相应的二 进制的原码、反码和补码。 [解]: (-115)原=(11110011)2 (-115)反=(10001100) (-115)补=(10001101) 3、已知[X]补=1100111,则[X]原= , [2X]补= ,并判断结果 是否溢出。 [解]:题目没有特殊说明,将最高为(第六位作为符号位) [X]反=[X]补-1=1100110,则[X]原=1011001 [2X]补=[X]补+ [X]补=1100111+1100111=1 1001110 C6· C5=1· 1=0,不溢出 另外,可以补齐第七位为0或者1,再进行计算获得。
第三章 作业
1、8086/8088操作数是从哪里来的?
答:来源有3种:立即数、寄存器、存储器操作数 指令中直接给出参加操作数; 参与操作的数存放在CPU的某个寄存器中; 参与操作的数存放在内存单元中,需要寻找相应的物理地址。 2、指出下列指令的错误 1)MOV AX, [SI][DI] 2) MOV [BX],[SI] 3) ADD BYTE, PTR[BX] (不能同时使用两个变址寄存器) (原操作数和目的操作数不能同时为存储器)
第三章 作业
微机原理与接口技术 第4章课后作业答案
解:即当从输入接口03F8H读入的数据满足ⅹⅹⅹⅹ1ⅹ1ⅹB时可以从接口03FBH输入 数据。 LEA SI,DATA MOV CX,200 NEXT: MOV DX,03F8H WAIT: IN AL,DX AND AL,0AH ;判断b1和b3位是否同时为1 CMP AL,0AH JNZ WAIT ;b1和b3位同时为1则读数据,否则等待 MOV DX,03FBH IN AL,DX MOV [SI],AL INC SI LOOP NEXT HLT 4.12 画图说明下列语句分配的存储空间及初始化的数据值。 (1)DATA1 DB ‘BYTE’,12,12H,2 DUP(0,?,3) (2)DATA2 DW 4 DUP(0,1,2),?,-5,256H 解: (1) 存储空间分配情况如图(a)所示。 9 (2) 存储空间分配情况如图(b)所示。
6
4.7执行下列指令后,AX寄存器的内容是多少? TABLE DW 10,20,30,40,50 ENTRY DW 3 . . . MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,[BX] 解:(AX)=1E00H 4.8 编写程序段,将STRING1中的最后20个字符移到STRING2中(顺序不变)。 解:首先确定STRING1中字符串的长度,因为字符串的定义要求以‘$’符号结尾, 可通过检测‘$’符确定出字符串的长度,设串长度为COUNT,则程序如下: LEA SI,STRING1 LEA DI,STRING2 ADD SI,COUNT-20 MOV CX,20偏移地址送寄存器SI,之后送SI的内容与DI的内容相加并将结果 送DI.指令执行后,(SI)=0017H;(DI)=(DI)+0017H. 4.3 试编写求两个无符号双子长数之和的程序. 两数分别在MEM1和MEM2单元中,和放 在SUM单元. 解: DSEG SEGMENT MEM1 DW 1122H,3344H MEM2 DW 5566H,7788H SUM DW 2 DUP(?) DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA BX,MEM1 LEA SI,MEM2 LEA DI,SUM MOV CL,2 CLC AGAIN: MOV AX,[BX] 2
曹玉珍 微机原理课后作业答案(1-8章)
第1章答案6. 解:(1) (0.653)10=(0.A72B)16128.016008.0008.1116688.02688.216168.07168.716448.0448.1016653.0 =⨯=⨯=⨯=⨯=⨯B A (2) (0.109375)10=(0.1C00)16C00.121675.0175.116109375.0=⨯=⨯(3) (0.4567)10=(0.74EA)1646592.4162912.02912.10166432.06432.14169152.049152.4163072.073072.7164567.0 =⨯=⨯=⨯=⨯=⨯A E 7. 解:(1)783 = 30FH30163031648154816783 =÷=÷=÷(2)5372=14FCH1016141162015201633512335165372 =÷=÷=÷=÷(3)957=3BDH301631131659135916957 =÷=÷=÷9. 解: (1)12813 B 0001101.02222222754723=++=++---原码:0.0001101B 反码:0.0001101B 补码:0.0001101B (2)12812-B 0001100.0)22(2221281254723-=+-=+-=--- 原码:1.0001100B 反码:1.1110011B 补码:1.1110100B (3)6417-B 0100010.0)22(222641762604-=+-=+-=--- 原码:1.0100010B 反码:1.1011101B 补码:1.1011110B 10. 解:0113101221111.021111.01.1112222217+-⨯+=⨯+=+=+++= 浮点形式为:0011 0111100100465601211.0211.0000011.022222643----⨯=⨯==+=+= 浮点形式为:1100 0110000100211.0643-⨯-=-浮点形式为:1100 111000011171036210010011.021*******.01.100100122225.73---⨯=⨯==+++=浮点形式为:1111 1100101(舍入处理:0舍1入法)第2章答案5. 答:8086系统中存储器的逻辑地址由段地址(段首址)和段内偏移地址(有效地址)两部分组成;存储单元的物理地址由地址加法器生成,寻址时,CPU 首先将段地址和段内偏移地址送入地址加法器,地址加法器将段地址左移4位并与段内偏移地址相加,得到一个20位的物理地址。
微机原理第4章练习题及答案
微机原理第4章练习题及答案第4章80某86指令系统一、自测练习题㈠选择题1.MOVA某,[B某+SI]的源操作数的物理地址是()。
A.(DS)某16+(B某)+(SI)B.(ES)某16+(B某)+(SI)C.(SS)某10H+(B某)+(SI)D.(CS)某10H+(B某)+(SI)2.MOVA某,[BP+Sl]的源操作数的物理地址是()。
A.(DS)某10H+(BP)+(SI)A.(ES)某16+(BP)+(SI)C.(SS)某16+(BP)+(SI)D.(CS)某10H+(BP)+(SI)3.MOVA某,ES:[B某+SI]的源操作数的物理地址是()。
A.(DS)某16+(B某)+SI)B.(ES)某10H+(B某)+(SI)C.(SS)某10H+(B某)+SI)D.(CS)某16+(B某)+(SI)4.JMPWORDPTR[DI]是()。
A.段内间接转移B.段间间接转移C.段内直接转移D.段间直接转移5.JMPFARPTRBlOCK(BLOCK是符号地址)是()。
A.段内间接转移B.段间间接转移C..段内直接转移D.段间直接转移6.INC指令不影响()标志。
A.OFB.CFC.SFD.ZF7.条件转移指令JNE的测试条件是()。
A.ZF=1B.CF=0C.ZF=0D.CF=18.下列指令中,有语法错误的是()。
A.MOV[SI],[DI]B.INAL,D某C.JMPWORDPTR[B某+8]D.PUSHWORDPTR20[B某+S1]9.假定(SS)=2000H,(SP)=0100H,(A某)=2107H,执行指令PUSHA某后,存放数据21H的物理地址是()。
A.20222HB.20221HC.200FEHD.200FFH10.对于下列程序段:AGAIN:MOVAL,[SI]MOVES:[DI],ALINCSIINCDILOOPAGAIN也可用指令()完成同样的功能。
A.REPMOVSBB.REPLODSBC.REPSTOSBD.REPESCASB11.对于下列程序段:AGAIN:MOVES:[DI],ALINCDILOOPAGAIN可用指令()完成。
微机原理与接口技术习题答案4
第4章汇编语言程序设计1.已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。
解:BUF DB "BONJOUR_BELLE"BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,[SI]MOV [DI],ALINC SIDEC DILOOP L12.利用移位、传送和相加指令实现AX的内容扩大10倍。
解:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。
XOR DX,DXSHL AX, 1RCL DX, 1MOV BX,AXMOV CX,DXSHL AX, 1RCL DX, 1SHL AX, 1RCL DX, 1ADD AX, BXADC DX, CX3.在缓冲区V AR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果V AR中保存的为有符号数,则再编写程序实现将其按递减关系排列。
解:V AR DW 1236,-432,3900XOR SI,,SIMOV AX,V AR[SI]CMP AX, V AR[SI+2]JAE L1XCHG AX, V AR[SI+2]L1:CMP AX, V AR[SI+4]JAE L2XCHG AX, V AR[SI+4]L2:MOV V AR[SI], AXMOV AX,V AR[SI+2]CMP AX, V AR[SI+4]JAE L3XCHG AX, V AR[SI+4]L3:MOV V AR[SI+2], AX4.编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。
《微机原理及应用》各章习题参考答案
《微机原理及应用》各章习题参考答案第1章微型计算机概论一、填空题1. 微机硬件系统主要由CPU、(存储器)、(总线)、(输入输出接口)和输入输出设备组成。
2. 冯·诺依曼计算机的核心原理是(存储程序原理)3. 完成下列数制的转换1)10100110B=( 166 )D=( A6H )H2)223.25 =( 11011111.01 )B=( DF.4 )H3)1011011.101B=( 5B.A )H=(1001 0001.01100010 0101 )BCD4. 已知[X]补5. 已知A=10101111,B=01010000,则A∧B的结果为( 00000000 ) B=86H,则X的十进制表示形式为( -122 )6. -29H的8位二进制反码是(11010110 )B7.字符4的ASCII码=( 34 )H二、简答题1.冯.诺依曼计算机的结构是怎样的,主要特点有哪些?解:将计算机设计为由运算器、控制器、存储器、输入设备和输出设备等5个部分组成,所有的执行都以运算器为核心,采用存储程序工作原理。
2. 已知X=-1101001B,Y=-1010110B,用补码方法求X-Y=?解:[X-Y]补=[X+(-Y)]补= [X]补+[-Y] [X]补原=11101001B [X]补 [-Y]=10010111B原=01010110B=[-Y] [X-Y]补补= [X]补+[-Y]补X-Y=[[X-Y]=11101101B补]补=10010011=-0010011=-193. 写出下列真值对应的原码和补码的形式:1)X=-1110011B2)X=-713)X=+1001001B解:1)[X]原码=11110011B , [X]补码=10001101B2)[X]原码=11000111B, [X]补码=10111001B3)[X]原码=01001001, [X] 补码=01001001B=?4. 已知X和Y的真值,求[X+Y]补1)X=-1110111B Y=+1011010B2)X=56 Y=-215. 若与门的输入端A、B、C的状态分别为1、0、1,则该与门的输出端状态为?若将这3位信号连接到或门,那么或门的输出又是什么状态?解:由与和或的逻辑关系知,若“与”门的输入端有一位为“0”,则输出为“0”;若“或”门的输入端有一位为“1”,则输出为“1”。
微机原理第4章习题与答案
……
PRGM ENDS
(3)ALPHA EQU BETA
(4) COUNT EQU 100
COUNT EQU 65
(5) GOON DW 10DUP(?)
……
JMP GOON
答案:
(1)字节变量,范围在0~255
(2)定义段的伪指令为SEGMENT
(3)BETA必须先定义
(4)EQU不能重复定义,在下一次定义前必须用PURGE撤消
MOV BX, F1
答案:
(1)
DATA SEGMENT PARA 'DATA' AT 46H
QA EQU 255;QA=255
QA1=QA GT 3000;255大于3000,命题假,QA1=0
QA2=0FFFH;QA2=0FFFH
QA3 EQU QA2 XOR 255;QA3=0FFFH⊕0FFH=0F00H
AND AX, 0FFH;AX=0045H
MOV BX, WORD PTR G1;BX=0FF20H
MOV BX, 255 AND 0FH;BX=000FH
ADD AX, OFFSET F2;AX=1245H
MOV BX, F1;BX=2211H
4.以下程序的执行结果是_______。
ADB‘1234’
BDW5 DUP(2,3 DUP(0))
CDW‘AB’,’C’,’D’
L1:MOVAL,TYPE B
MOVBL,LENGTHB
MOVAH,SIZE A
MOVBH,SIZE C
MOVCL,TYPEL1
MOVCH,SIZEB
答案:AX=0102H,BX=0205HCX=0AFFH
微机原理第四章练习题及解答
微机原理第四章练习题及解一:单项选择题●汇编源程序文件的扩展名是( C )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE●源程序文件汇编后的目标文件的扩展名是( B )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE●目标文件连接后的可执行文件的扩展名是( D )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE●下列可作为标识符用的字符串是( C )。
A:MOV B:ZF C:FAH D:PTR●下列为寄存器名的字符串是( B )。
A:ZP B:BP C:AP D:CP●下列为状态标志的字符串是( A )。
A:ZP B:BF C:DF D:TF●下列为控标志的字符串是( D )。
A:ZP B:SF C:OF D:TF●下列为指令助记符的字符串是( C )。
A:ADCC B:AAAA C:SUB D:POOP●下列为运算符的字符串是( B )。
A:ADC B:PTR C:OAG D:LOOP●定义字类型的伪指令符是( B )。
A:DB B:DW C:DD D:DQ●说明字节类型的伪指令符是( C )。
A:WORD B:DWORD C:BYTE D:SHOR●返回变量段属性的伪指令符是( B )。
A:OFFSET B:SEG C:TYPE D:SIZE●定义过程结束的伪指令符是( C )。
A:END B:ENDS C:ENDP D:ENDM●下列为段定义的伪指令是( B )。
A:PROC B:SEGMENT C:ASSUME D:STRUC●下列为符号定义的伪指令是( B )。
A:ORG B:EQU C:STR D:RET二:填空题●将指令助记符翻译为指令机器码的过程称为(汇编)。
●汇编程序的功能是输入扩展名为ASM的(汇编源程序)文件,输出扩展名为OBJ的(目标代码)文件和扩展名为LST的(列表)文件。
●汇编源程序中的保留字类型有(寄存器名)、(标志名)、(指令助记符)、(伪指令符)和(运算符)。
微机原理与接口技术第四章试题及答案
第四章4-1填空1.MCS-51的Po口作为输出端口时,每位能驱动8 个SL型TTL负载.2.MCS-51有4个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入"1"3.设计8031系统时,_P0、P2 口不能用作一般I\O口.4.MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器__SCON _加以选择.5.当使用慢速外设时,最佳的传输方式是中断.6.当定时器To工作在方式3 时,要占定时器T1的TR1和TF1_两个控制位.7.MCS-51有5 个中断源,有2 个中断优先级,优先级由软件填写特殊功能寄存器IP 加以选择..8.用串口扩并口时,串行接口工作方式应选为方式0 .9.在串行通信中,有数据传送方向单工、半双工、全双工三种方式.10.外部中断入口地址为_ 0013H4-2判断1.MCS-51的5个中断源优先级相同。
(×)2.要进行多机通信,MCS-51串行接口的工作方式应为方式1。
(×)3.MCS-51上电复位时,SBUF=00H。
(×)。
4.MCS-51有3个中断源,优先级由软件填写特殊功能寄存器IP加以选择.. (×)5.用串口扩并口时,串行接口工作方式应选为方式1. (×)6.外部中断INTO 入口地址为_0013H(×)7.MCS-51外部中断0的入口地址是0003H。
(√).8.TMOD中的GATE=1时,表示由两个信号控制定时器的启停。
(√)。
9.使用8751且=1时,仍可外扩64KB的程序存储器。
(×)10.PC存放的是当前执行的指令。
(×)11.MCS-51的特殊功能寄存器分布在60H~80H地址范围内。
(×)12.MCS-51有4个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入"0"(×)4-3选择1.在中断服务程序中,至少应有一条( D )(A)传送指令(B)转移指令(C)加法指法(D)中断返回指令2.要使MCS-51能够响应定时器T1中断、串行接口中断,它的中断允许寄存器IE的内容应是( B )(A)98H (B)84H (C)42 (D)22H3.D MCS-51在响应中断时,下列哪种操作不会发生( D ).(A)保护现场(B)保护PC (C)找到中断入口若悬河(D)保护PC转入中断入口4.用MCS-51串行接口扩展并行I\O口时,串行接口工作方式应选择( C )(A)方式0 (B)方式1 (C)方式2 (D)方式35.MCS-51有中断源(A)(A)5个(B)2个(C)3个(D)6个6.MCS-51响应中断时,下面哪一个条件不是必须的()(A)当前指令执行完毕(B)中断是开放的确(C)没有同级或高级中断服务须(D)必须有RET1指令7.使用定时器T1时,有几种工作模式(D)(A)1种(B)2种(C)3种(D)4种8.计算机在使用中断方式与外界交换信息时,保护现场的工作方式应该是( B )(A)由CPU自动完成(B)在中断响应中完成功之路(C)应由中断服务程序完成(D)在主程序中完成9.下面哪一种传送方式适用于处理外部事件( C )(A)DMA (B)无条件传递进(C)中断(D)条件传递1、2、4章的编程1.8225A控制字地址为300FH,请按:A口方式0输入,B口方式1输出,C口高位输出,C口低位输入,确定8225A控制字并编初始化程序.解:控制字为10010101=95H初始化程序:MOV DPTR ,#300FHMOV A,#95HMOVX @DPTR ,A2.编定一个软件延时1S和1min的子程序.设fosc=6Hz,则一个机器周期1μs。
微机原理与接口技术(科学出版社)第4章课后习题及答案
微机原理与接口技术第四章课后习题1.指令主要有哪些分类方式? 其主要类别是什么?答:操作数、级别、功能。
操作数:无操作数、单操作数、双操作数三操作数;级别:机器指令和汇编指令功能:传送类、算术运算类、位操作类、I/O类、串操作类、CPU控制类、转移类;2.80X86的寻址方式有哪些?它们的具体含义是什么?答:操作数寻址方式主要有立即寻址方式、寄存器寻地址、存储器寻址方式、端口寻址方式(1)立即寻址方式:操作对象是这个操作数本身(2)寄存器寻地址:操作对象是寄存器中的内容(3)存储器寻址方式:操作对象是内存地址所对应的存储单元中的内容(4)端口寻址方式:操作数是指明端口的地址、端口地址所对应的端口中的内容是操作对象3. 指出下列各指令中源操作数和目的操作数的寻址方式:⑴MOV BX,WORD PTR[2200H] ⑵ AAA⑶JUM 2200H ⑷ LES DI,[2100H]⑸ MOV [BX+SI+8], BX ⑹ ADD AX,[BP+3000H]答:⑴MOV BX, WORD PTR[2200H] 源操作数:直接寻址;目的操作数:寄存器寻址⑵AAA 源操作数:寄存器寻址AL(也称隐含寻址);目的操作数:寄存器寻址⑶JUM 2200H 程序转移段内直接寻址方式⑷LES DI,[2100H] 源操作数:直接寻址;目的操作数:寄存器寻址⑸MOV [BX+SI+8], BX 源操作数:寄存器寻址;目的操作数:相对基址变址寻址⑹ADD AX,[BP+3000H] 源操作数:直接寻址;目的操作数:寄存器相对寻址4. 设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500 H,则:(1)10202H(2)40300H(3)21010H(4)42156H(5)31510H5.写出清除AX寄存器内容的方法并比较。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、STAD DB 28,-30,0FBH,49HARRAY DW 2468H,87H,100,0A8HALPHA DW 12H,0H,5678H,1234H,0E4H,0HBETA DB 4 DUP(7),5 DUP('A'),10 DUP(?),10 DUP(3,2) STRING DB 'THIS IS A STR',’$’SUM EQU 1802、DATA1 DB -10,29H,29,'7',?DATA2 DW 2 DUP('12',12),0CDHDATA3 DD 123456H低高3、X1 DB ?,76X2 DW 2 DUP(1,2),60H,?X3 DD 5COUNT EQU $-X2X1 低X2X3高10H,即16。
这条指令表示从X2的首地址到COUNT所在的地址之间有16个字节。
$ 是当前位置计数器,在汇编程序时,用$ 保存当前位置指针。
4、ORG 0100HSA1 DB 30,'30'SA2 DW SA1SA3 EQU $-SA10000HSA1 0100HSA2 ;SA1的值是0100HSA4 ;SA3的值是55、ORG 30HDA1 DB 0,'0',40H0000HDA1 0030H存储单元的偏移地址是0030H 6、DATAS SEGMENTBUF1 DB 50 DUP(0)BUF2 DW 4567H,671,0D8HBUF3 DB 10 DUP(?)(4) COUNT EQU $-BUF2BUF4 DB 3,4,8,9,10或(4) COUNT1 EQU BUF4-BUF2DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码(1) LEA BX,BUF1(2) MOV AL,BYTE PTR BUF2[3](3) MOV BUF3[1],24H(5) MOV AX,0(5) MOV AL,BUF4[3](5) ADD AX,BUF2[1](5) MOV WORD PTR BUF3,AXMOV AH,4CHINT 21HCODES ENDSEND START7、DATAS SEGMENTFLDB DW 0A47CHTABLE DB 52H,67H,0C0H,210ABC EQU WORD PTR TABLEARRAY DB '1234'CNT EQU $-ARRAY DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXMOV AX,FLDBMOV BX,ABCMOV CH,TABLE+2MOV DL,ARRAYMOV DH,CNTMOV AH,4CHINT 21HCODES ENDSEND START(1)AX=0A47CH(2) BX=6752H(3) CH=0C0H(4) DL=31H(5) DH=04H8、前一个AND是与指令,在程序运行时执行;后一个AND是逻辑运算符,其运算在汇编时完成。
AND AX,09H9、MOV BX,AXMOV CL,3SHL AX,CLSUB AX,BX10、DATAS SEGMENTTABLE DW 10,20,30,40,50NEW DW 3DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV SI,OFFSET TABLEADD SI,NEW ;SI=SI+3MOV AX,[SI] ;AX=1E00HHLTCODES ENDSEND START11、DATAS SEGMENTBUFFER DW 3,-5,3FLAG DB 0DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXMOV AX,BUFFER[2]MOV BX,BUFFER[4]CMP BUFFER,AXJNE L1INC FLAGL1: CMP BUFFER,BXJNE L2INC FLAGL2: CMP AX,BXJNE L3INC FLAGL3: CMP FLAG,0JE L4DEC FLAGL4: MOV AH,4CHINT 21HCODES ENDSEND START12、DATAS SEGMENTDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXMOV AX,100MOV CX,5LOP:SUB AX,CXLOOP LOPHLTCODES ENDSEND STARTAX=64H-5-4-3-2-1=55H,CX=0 13、DATAS SEGMENTN1 DB 0,1,2,3,4,5,6,7,8,9N2 DB 5 DUP(?) DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXMOV CX,5MOV BX,5MOV SI,0LOP:MOV AL,N1[BX+SI]MOV N2[SI],ALINC SILOOP LOPHLTCODES ENDSEND STARTN2存储区的数依次为5,6,7,8,914、DATAS SEGMENTDAT1 DW 10 DUP(0,1,2,3,4,5,6,7,8,9)MAX DW ?MIN DW ?DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXMOV AX,DAT1+198MOV BX,DAT1+196CMP AX,BXJG NEXT1XCHG AX,BXNEXT1: MOV CX,98NEXT: MOV SI,CXADD SI,CXSUB SI,2CMP AX,DAT1[SI]JL LCMP BX,DAT1[SI]JG GJMP NL: MOV AX,DAT1[SI]JMP NG: MOV BX,DAT1[SI]N: LOOP NEXTMOV MAX,AXMOV MIN,BXDONE: MOV AH,4CHINT 21HCODES ENDSEND START15、DATAS SEGMENTNUM DB 0,-5,3,2,-6,9,7,-2,6,1CNT DW 10PLUS DB 10 DUP(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXLEA SI,NUMLEA DI,PLUSMOV CX,CNTN1: CMP BYTE PTR [SI],0JL L1MOV AL,[SI]MOV [DI],ALINC DIL1: INC SILOOP N1MOV AH,4CHINT 21HCODES ENDSEND START16、DATAS SEGMENTARRAY DB 200 DUP(?)LTEV DB 6 DUP(?) ;顺序存放90-100人数,80-89人数,70-79人数,60-69人数,60以下人数,平均成绩DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA SI,ARRAYMOV AX,0MOV BX,0MOV CX,200N1: CMP BYTE PTR [SI],90JL L1INC LTEVJMP N2L1: CMP BYTE PTR [SI],80JL L2INC LTEV[1]JMP N2L2: CMP BYTE PTR [SI],70JL L3INC LTEV[2]JMP N2L3: CMP BYTE PTR [SI],60JL L4INC LTEV[3]JMP N2L4: INC LTEV[4]N2: MOV BL,BYTE PTR [SI]ADD AX,BXINC SILOOP N1MOV BL,200 ;求平均成绩DIV BLMOV LTEV[5],ALMOV AH,4CHINT 21HCODES ENDSEND START17、DATAS SEGMENTDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXGETKEY: MOV AH,1 ;系统功能调用INT 21H ;al←按键的ASCII码CMP AL,'*' ;是*?JE DONESUB AL,20H;小写变大写MOV DL,AL;要输出的字符放在DL中MOV AH,2INT 21HJMP GETKEYDONE: MOV AH,4CHINT 21HCODES ENDSEND START18、DATAS SEGMENTDAT1 DB '0123456789ABCDEF'DAT2 DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 DAT3 DB 16 DUP (?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV CX,16LEA BX,DAT1MOV SI,0N1: MOV AL,DAT2[SI]XLAT ;AL<-[BX+AL]MOV DAT3[SI],ALINC SILOOP N1MOV AH,4CHINT 21HCODES ENDSEND START19、DATAS SEGMENTDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV AH,1INT 21HMOV BH,AL ;BH存放最大值MOV BL,AL ;BL存放最小值MOV CX,9GETKEY: MOV AH,1 ;系统功能调用INT 21H ;al←按键的ASCII码CMP BH,ALJL N1CMP BL,ALJL N2MOV BL,ALJMP N2N1: MOV BH,ALN2: LOOP GETKEYMOV DL,BH ;要输出的最大值放在DL中MOV AH,2INT 21HMOV DL,BL ;要输出的最小值放在DL中MOV AH,2INT 21HMOV AH,4CHINT 21H CODES ENDSEND START。