廖建明汇编教材习题集_第1页
廖建明汇编教材习题集_第2页
廖建明汇编教材习题集_第3页
廖建明汇编教材习题集_第4页
廖建明汇编教材习题集_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业习 题 一1.1 试分别将下列二进制数真值用补码表示(8位二进制数)。(1)+ (2)- (3)- (4)+1.2. 试分别将下列补码表示的二进制数转换为相应的十进制数真值。(1) (2) (3) (4)1.3. 试完成下列数制间的转换。(1)十进制数转换为8位二进制数 34,28,100,127,89,57(2)无符号二进制数转换为十进制数 ,(3)十进制数转换为十六进制数79,300,48,19,133,243(4)八进制数转换为十六进制数 234,112,23,7

2、6,36,2221.4. 试分别完成下列补码表示的二进制数运算,并将结果转换为十进制数真值。(1)+ (2)- (3)-(4)- (5)- (6)+1.5. 试分别完成下列各十六进制数的加减运算,结果用十六进制数表示。(1)3E40+AB54 (2)1000+F300 (3)8799-6DE4 (4)DE4C-A0E41.6. 设有二进制数,若将该数分别看作是无符号数、原码表示的带符号数和补码表示的带符号数,它对应的十进制数真值分别是多少?1.7. 要表示无符号十进制数1000、10000和,至少分别需要多少位二进制数?1.8. 由键盘输入的字符一般以其ASCII码形式来表示。当从键盘输入十六

3、进制数的16个数符(09和AF)时,如何将它们转换为对应的四位二进制数00001111?习 题 二2.1 如何理解微处理器、微型计算机和微型计算机系统三个概念?2.2 试说明Intel 8086/8088 CPU采用了什么结构使得其与8位及8位以下CPU相比具有更高的指令执行效率?2.3 Intel 8086/8088 CPU包含哪几个组成部分?它们各自的功能是什么?2.4 Intel 8086/8088 CPU中有哪些寄存器?它们的用途是什么?2.5 Intel 8086/8088 CPU中标志寄存器各位都有什么含义?2.6 Intel 8086/8088 CPU中的寄存器都是16位的,那么

4、它是怎么实现对20位物理地址寻址的?2.7 在IBM PC微型计算机上,分别进行以下8位二进制数的运算后,标志寄存器中OF、ZF、SF、CF的值分别为多少?(1) + (2) + (3)(4)2.8有两个字数据12H和AB12H分别存放在存储器的10016H和8BA00H中,请图示它们在存储器中的存放情况。2.9 在8086/8088中,某存储单元的逻辑地址如下,请算出它们的物理地址是多少?(1)4514H:017BH(2)F000H:0100H(3)2350H:1ABCH(4)10E0H:2020H2.10 数据段中某个存储单元在(DS)= 095FH时,物理地址是11820H,那么当DS=

5、0F2.11 已知一条指令执行前,(CS)= 03FAH,(IP)= 45A0H,该指令的第1字节的物理地址是多少?2.12 如图2.19所示,试写出地址为20021H、20024H、20026H字节单元的内容,以及地址为20022H、20024H、20026H的字单元内容。图2.19 习题2.10图示2.13 如图2.20所示,地址20000H为数据段的段基址,那么逻辑地址为2000H:0020H的存储单元的物理地址是多少?该地址的字内容是多少?图2.20 习题2.11图示2.14 IBM PC微型计算机中某一个存储单元的物理地址是12345H,试计算下列不同的逻辑地址表示:(1)1234H

6、:_H(2)_H:0345H2.15 设堆栈寄存器(SS)= 3E4BH,程序中设置堆栈长度为200个字节,试计算出堆栈底部字单元物理地址、堆栈指针SP初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。2.16 设(AX)= 1122H,(BX)= 3344H,(CX)= 5566H,(SP)= 2000H,试分析以下程序执行后AX、BX、CX、SP中的内容分别为多少?并画出堆栈变化的示意图。:PUSH AXPUSH BXPUSH CXPOP AXPOP CX:2.17 设(SP)= 0040H,如果用入栈指令存入5个数据,则SP为多少?若又用出栈指令取出2个数据,则SP为多少?习 题

7、三3.1 写出下列指令源操作数的寻址方式,并说明该操作数在哪个段?(1) MOV AX,68H(2) MOV AH,BL(3) MOV AX,BX(4) MOV AX,SI(5) MOV AX,5000H(6) MOV AL,BLOCK(7) MOV BX,BP + 5(8) MOV AX,CS:1000H(9) MOV DS,AX(10)MOV BL,BUFSI(11)MOV AX,BUFBXSI(12)MOV AX,BP 10DI(13)MOV AX,SS:BX 100SI(14)MOV AX,AREYBPSI3.2 假设(DS)= 3000H,(ES)= 4100H,(SS)= 2000

8、H,(SI)= 00A0H,(DI)= 2H,(BX)= 100H,(BP)= 10H,(BUF)= 2000H。试指出下列各指令中源操作数的寻址方式,若为存储器操作数,请计算其物理地址。(1) MOV AL,0ABCH(2) MOV AX,SI(3) MOV AX,BUF(4) MOV AX,BUFBX(5) MOV AX,BX(6) MOV AX,SI(7) MOV AL,BP(8) MOV AX,BUFBPSI(9) MOV AX,BX 40H(10)MOV AX,40HSI(11)MOV AX,BX 40HBX(12)MOV AX,BP + 100HSI(13)MOV AX,BUFDI

9、(14)MOV AX,ES:BUFBXDI3.3 已知(SS)= 0915H,(DS)= 0930H,(SI)= 0A0H,(DI)= 1C0H,(BX)= 80H,(BP)= 470H。现有一条指令“MOV AX,SRC”,若源操作数的物理地址为095C0H,试用四种不同的寻址方式改写此指令(要求上述每个已知条件至少要使用一次)。3.4 指出下列指令是否合法。(1) MOV AX,DL(2) MOV BX,5(3) ADD AX,5(4) MOV DS,1000H(5) PUSH CH(6) POP CS(7) ADD ES,AX(8) MOV SS,CS(9) ADD BP,DA_BYTE

10、(10)INC BX(11)XCHG AX,1234H(12)CMP AL,1919H(13)SAR BXDI,1(14)RCL DX,2(15)MOV CS,AX(16)SUB 5678H,BX(17)NOT AX,CL(18)MOV AX,BXBP(19)AND AX,10HSIDI(20)LEA DS,318HSI3.5 已知(DS)= 091DH,(SS)= 1E4AH,(AX)= 1234H,(BX)= 0024H,(CX)= 5678H,(BP)= 0024H,(SI)= 0012H,(DI)= 0032H,(09226H)= 00F6H,(09228H)= 1E40H,(1E4F

11、6H)= 091DH。下列各指令或程序段分别执行后的结果如何?(1)MOV CL,20HBXSI(2)MOV BPDI,CX(3)LEA BX,20HBXSI MOV AX,2BX(4)LDS SI,BXDI MOV SI,BX(5)XCHGCX,32HBX XCHG20HBXSI,AX3.6 如果TABLE为数据段中0032单元的符号地址,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么?MOV AX,TABLELEA AX,TABLE3.7 假设(CX)= 0FFFFH,那么下面指令单独执行后标志寄存器的CF、AF、ZF、SF和OF分别是什么?(如

12、无影响用“”表示)(1)SUB CX,0FFFFH(2)MOVCX,BX(3)INC CX3.8读程序题。(1)已知(DS)= 1234H,(SI)= 124H,(12464H)= 30ABH,(12484H)= 464H。LEASI,SIMOVAX,SIMOV SI+22H,1200HLDSSI,SI+20HADD AX,SI上述程序段执行后:(DS)=_,(SI)=_,(AX)=_。(2)已知(BX)= 6035H,(CX)= 0F0FH。ORBH,CHANDBL,CLNEGBLNOTBH上述程序段执行后:(BH)=_,(BL)=_。(3)已知(AX)= 0FF60H,CF = 1。MOV

13、 DX,96XORDH,0FFHSBBAX,DX上述程序段执行后:(AX)=_,CF =_。(4)已知(AX)= 0A65CH,(CX)= 0F002H。ROL AX,CLORAH,CHRCRAX,CL上述程序段执行后:(AX)=_,CF =_。(5)已知(AX)= 0FFAAH,CF = 1。MOVCX,0ABHORCX,0FF00HSUBAX,CX上述程序段执行后:(AX)=_,CF =_。3.9 试根据以下要求写出相应的汇编语言指令或指令序列。(1)将DH的低三位清0,而其他位保持不变。(2)将DI的高5位置1,而其他位保持不变。(3)将AX的第03位置1,第79位取反,第1315位清0

14、,其他位保持不变。(4)把标志寄存器中的IF位置1。(5)由寄存器AX、DX组成一个32位带符号数(DX中存放高16位),试求这个数的负数。(6)现有3个字节存储单元A、B、C,在不使用ADD和ADC指令的情况下实现:(A)+(B)=(C)。(7)用一条指令将CX中的整数变为奇数,如果原来已是奇数,则CX中数据保持不变,如果原来是偶数,则(CX)+ 1形成奇数。(8)用一条指令将CX中的整数变为偶数,如果原来已是偶数,则CX中数据保持不变,如果原来是奇数,则(CX) 1形成偶数。3.10 给出下列指令的机器目标代码。(1)MOVBL,12HSI(2)MOV ES:12HSI,BL(3)ADDW

15、ORD PTR 0ABHBPDI,1234H(4)SALDX,1(4)RCLBYTE PTR 10HBX,CL(5)NOTDI(6)STC(7)POPDS(8)PUSHCX习 题 四4.1 设数据段数据定义如下:DATASEGMENTNUMBER1DW2008HNUMBER2DW15 DUP(2006H)STRING1DBHow do you do? $BUFDB10H DUP(1,2 DUP(2)DATA ENDS下面几条MOV指令单独执行后,目的寄存器CX中的内容发是什么?(1)MOVCX,NUMBER1(2)MOVCX,NUMBER2(3)MOVCX,TYPE NUMBER1(4)MOV

16、CX,TYPE STRING1(5)MOVCX,LENGTH NUMBER2(6)MOVCX,LENGTH STRING1(7)MOVCX,SIZE NUMBER2(8)MOVCX,SIZE BUF4.2 按下面的要求写出相应的数据定义语句。(1)定义一个字节区域,第一个字节的值为20,其后跟20个初值为0的连续字节;(2)定义一个以0为结束符的字符串,其初值为:The course is easy;(3)定义2008个字,其初值为任意值;(4)定义一个双字变量,其初值为6571H。4.3 已知下列程序段:DATASEGMENTDB1DB12H,34H,0,56HDW1DW78H,90H,0A

17、B46H,1234HADR1DWDB1ADR2DWDW1BUFDB5 DUP(0)DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATAXORCX,CXMOVCL,3ADDADR1,CXSUBADR2,CXMOVBX,ADR1MOVDI,BXMOVSI,ADR2MOVAL,DB1BXMOVBUFDI,ALMOVAX,DW1BXSIMOVWORD PTR BUF,AXCODEENDS上述程序运行结束后,BUF中各字节单元的内容是什么?4.4 某数据段中有:COUNT1EQU16HCOUNT2DW16H下面两条指令有何异同?MOVAX,COUNT1MOVBX,COUNT

18、24.5 已知有下列3个等值语句:N1EQU30M2EQU87P3EQU4那么下列表达式的值各是多少?(1)M2/N1+M2 MOD P3 *2(2)P3 SHL 42(3)N1 GT M2 AND P3 LT M2(用8位二进制数表示)(4)P3 OR 7(5)N1 XOR P34.6 假设数据段中有数据定义如下:PARTNODW?FNAMEDB16 DUP(?)COUNTDD?FLENGTHEQUCOUNTFNAMEPLENGTHEQU$PARTNO那么经过汇编后,FLENGTH和PLENGTH的值是多少?它们表示什么意义?4.7 假设程序中有以下的数据定义及传送指令,那么传送指令执行后各

19、寄存器的内容分别是什么?DATASEGMENTORG $ +10HBUF1DW1234H,5678HBUF2DWABBUF3DW20 DUP(0)DATAENDSCONSTEQU2345HMOVAL,LOWCONSTMOVAH,HIGHCONSTMOVBL,HIGH(OFFSET BUF1)MOVBH,LOW(OFFSET BUF2)MOVCL,LOW(OFFSET BUF3)4.8 已知有下列数据定义,根据这些数据定义完成规定的操作。T1DBABCDET2DW1234HT3DB20H DUP(?)(1)用一条MOV指令将T1的偏移地址放入DI中;(2)用一条MOV指令将T2的段基址放入DS中

20、;(3)用一条MOV指令将T2的低地址单元中的内容放入DL中;(4)用一条EQU伪指令使符号CONST的值等于数组变量T3所占的总字节数。4.9 已知有下列数据定义语句:DA1DWAB,CD,EFDA2DW1234H,5678H试用DB定义语句将它们改写成在存储器中完全相同的存储形式。4.10 已知有下列数据定义语句:X1DB3,5X2DW123,456执行下列MOV指令后,各寄存器的值分别是多少?(1)MOVAX,WORD PTR X1(2)MOVBL,BYTE PTR X2(3)MOVBH,X1+1(4)MOVCX,X2+2(5)MOVDL,BYTE PTR X2+1(6)MOVDH,BY

21、TE PTR X2+24.11 下面各题中语句有语法错误,试分别用两种方法修改使它们在汇编时能够通过:(1)M1DW5060HMOVBL,M1(2)M2EQU10HMOVM2,AL(3)M3DWABCD(4)M4DB1234(5)DATA1SEGMENTDA1DW1234HDATA1ENDSDATA2SEGMENTDA2DW5678HDATA2ENDSCODESEGMENTASSUME CS:CODE,DS:DATA1MOVBX,DA2CODEENDS4.12 设已知数据段:DATASEGMENTDA1DBXX,XXDA2DBXX,XXADRRDWDA1,DA2DATAENDS为使ADRR+2

22、字存储单元中存放内容为0022H,上面的方框中应填写什么语句?4.13 下面的指令执行后,寄存器DS和SI的内容分别是多少?ADDRDW1234H,5678H,0ABCDHLDSSI,ADDR+14.14 设某数据段为:DATASEGMENTORG20HNUM1 = 8NUM2 = NUM1+10HDA1DBIBM PCDB0AH,0DHCONTEQU$DA1DA2DWIB,M,PC,0A0DHDATAENDS上述数据段定义后,DA1和DA2的偏移量、CONT的值和DA2+5字节单元的内容分别是多少?4.15 设某数据段为:DATASEGMENTORG34HNUM =DA1DW10H,$+20

23、H,30H,$+40HDA2DWDA1+NUM+10HDATAENDS上述语句汇编后,$+20H和$+40H中的$分别是多少?为使DA2字单元中的值为50H,等号语句NUM后的空白处应填什么?4.16 汇编语言源程序是如何装入CS、DS、SS和ES的?4.17 汇编语言源程序在运行结束后为什么要返回操作系统?它们是如何返回的?习题五习题五5.1 程序的基本结构有_、_与_三种。5.2 下面的程序段完执行后,AX,DX与BL的内容为多少?MOV AX, 6540HMOV DX, 3210HMOV CL, 04SHL DX, CLMOV BL, AHSHL AX, CLSHR BL, CLOR D

24、L, BL5.3 编写分支程序,在进行条件判断前,可用指令改变标志寄存器的某些位从而形成条件,下面的指令中不能形成条件的指令是_。(A) XOR (B) ADD(C) TEST (D) MOV5.4 在语法正确的情况下,指令JMP FAR PTR LABEL1属于_。(A) 段内直接寻址 (B) 段内间接寻址(C) 段间直接寻址 (D) 段间间接寻址5.5 指令JMP BX转移的目标地址的偏移量为_。(A) IP+BX的内容 (B) BX的内容(C) BX所指向的存储单元的内容 (D) IP-BX的内容5.6 下面的程序段条件转移语句发生跳转时,(AL)=_。CMP AL, 0FBHJNL N

25、EXT(A) 80H (B) 8FH(C) 0F0H (D) 0FFH5.7 设标识符DONE是程序中某指令语句的标号,与JMP指令同在一个逻辑段内,下列的哪个程序段不能够转移到标号DONE处的语句执行。(A) JMP DONE (B) MOV BX, OFFSET DONE JMP BX(C) MOV BX, DONE JMP BX(D) LEA BX, DONE JMP DONE5.8 下面的程序运行后,(AL)=_,CF=_。MOV CL, 8MOV AL, 0NOT ALROL AL, CLCMP AL, 0FFHJZ NEXTMOV AL, 0NEXT: 5.9 在下面的程序段中,“

26、DEC CX”指令执行了_次。 MOV CX, 6 JCXZ NEXTL1: DEC CX JNZ L1NEXT: .(A) 0 (B) 5(C) 6 (D) 75.10 试分三种情况说明,当NUM字节单元中数据是什么情况时,TEMP字节单元分别是多少?NUM DB ?TEMP DB ? MOV AL, NUMTEST AL, 99HJNE RESAND AL, 99HJMP END0RES: JS NE INC AL JMP END0NE: DEC ALEND0: MOV TEMP, AL5.11 循环体包括哪几部分?(A) 初始化部分、工作部分、控制部分、修改部分、结束处理部分(B) 工作

27、部分、修改部分、控制部分(C) 工作部分(D) 初始化部分、工作部分5.12 循环控制指令LOOPNZ的转移条件是_。(A) (CX)0并且ZF=0 (B) (CX)0或者ZF=0(C) (CX)=0并且ZF=0 (D) (CX)0并且ZF=15.13 下面的程序段执行后,BUF1的前5个字节单元内容分别是多少?DATA SEGMENT DA1 DW 123H, 456H, 0AB00H DA2 DB 12H, 34H, 56H, 0ABH DB $ - DA2 BUF1 DB 10H DUP(1,2,3) BUF2 DB 10H, 20H, 30HDATA ENDSMOV SI, OFFSE

28、T DA1MOV DI, OFFSET BUF1MOV CX, 5LOP: MOV AL, SIMOV DI, ALINC SIINC DILOOP LOP5.14 已知BUF开始的数据区中存放有10个大、小写字母,下面程序段完成的功能是什么? MOV CX, 10 LEA BX, BUF L2: MOV AL, BX CMP AL, Z JBE L1 SUB AL, 20H MOV BX, AL L1: INC BX LOOP L25.15 下列程序执行后,寄存器AX,BX,CX与DX的内容分别是什么?如果将LOOP指令分别换成LOOPZ与LOOPNZ指令,结果又如何?CODE SEGMEN

29、T ASSUME CS:CODEBEGIN: MOV AX, 2 MOV BX, 3 MOV CX, 4 MOV DX, 5NEXT: ADD AX, AX MUL BX SHR DX, 1 LOOP NEXT MOV AH, 4CH INT 21HCODE ENDS END BEGIN5.16 阅读下列程序,回答下列问题:(1) 该程序完成什么功能?(2) 程序中的INC SI可否用指令ADD SI,1代替,为什么?(3) 程序中的指令LEA SI, DATA1可用指令_代替。(4)CLC的目的是_。DATA SEGMENT DATA1 DB 85H, 27H, 4AH DATA2 DB 9

30、3H, 87H, 65H LEGH DW 3 SUM DB 0, 0, 0DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATABEGIN: MOV AX, DATA MOV DS, AX LEA SI, DATA1 LEA BX, DATA2 LEA DI, SUM MOV CX, LEGH CLCAGAIN: MOV AL, SI ADC AL, BX MOV DI, AL INC SI INC BX INC DI LOOP AGAIN MOV AH, 4CH INT 21HCODE ENDS END BEGIN5.17 DX和AX联合存放一个32位整数

31、(DX存放高16位),编写程序将该数据逻辑左移一位。5.18 试编写程序将从键盘输入的小写字母用大写字母显示。5.19 试编写程序将一个包含有20个有符号字节数据的数组ARRAY,分成正整数数组PLUS与负整数数组NEGA两个数组,并且将这两个数组中的数据个数显示出来。5.20 试编写程序将标志寄存器的高8 位与低8 位互换。5.21 在大小为20个字节的数据区中产生排列为下列两种情况之一的数据,第一种排列:DB 0, A, 1, B9, J第二种排列:DB A, 0, B, 1J, 9并显示排列结果,产生哪种结果根据键盘输入1或2决定。5.22 设有单字节有符号数X,Y与Z,如果X+Y200

32、,则求X-Z,否则求X+Z,运算结果存储在SUM字单元中。5.23 已知一个多字节数据存放在以DA1开始的连续单元中,高字节存放在高地址单元,低字节存放在低地址单元,该数据的字节个数存放在LENG字节单元中,编写程序计算其绝对值,并存放回原位置。习题六6.1 定义子程序应该采用的一对伪指令是_。(A) SEGMENT/ENDS (B) BEGIN/END BEGIN(C) PROC/ENDP (D) CALL/RET 6.2 调用子程序的指令是_。(A) RET (B) JMP(C) LOOP (D) CALL6.3 已知CALL BX执行前SP=100H,执行后SP的内容为_。(A) 0FC

33、H (B) 102H(C) 98H (D) 0FEH6.4 下列指令中,_属于段间间接调用。(A) CALL SUB1 (B) CALL FAR PTR SUB1(C) CALL DWORD PTR BX (D) CALL WORD PTR BXSI6.5 段内直接调用的转移范围为_。(A) -128127 (B) -3276832767(C) -6553665535 (D) 0327676.6 下面的子程序试图完成当AL与BL的内容相等时设置AL的内容为0,不相等时设置AL的内容为0FFH,有错吗?如果有错,请改正。 EXAM PROC CMP AL, BL JZ END0 MOV Al,

34、0FFH RET END0: MOV AL, 0 ENDP EXAM6.7 CALL指令在段间调用与段内调用下各完成什么功能?6.8 RET指令在段间返回与段内返回下各完成什么功能?6.9 段间返回指令“RET 4”6.10 子程序在什么时候需要保护寄存器?有那两种方式?6.11. 调用子程序时传递参数的方式一般有哪几种?6.12. 请说明调用指令CALL与转移指令JMP的主要相同点与不同点。6.13. 下面的子程序调用是否正确?DATA SEGMENT V1 DB 5 V2 DB ?DATA ENDSSTACK1 SEGMENT PARA STACK DW 10H DUP (?)STACK1

35、 ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACK1BEGIN: MOV AX, DATA MOV DS, AX MOV AL, V1 CALL NEAR PTR DECM MOV V2, AL MOV AH, 4CH INT 21HDECM PROC FAR DEC AL DEC AL RETDECM ENDPCODE ENDS END BEGIN 6.14. 已知SHIFT是定义在代码段中属性为NEAR的子程序,数据段DATA中ADDR变量存放了SHIFT的偏移量,试根据上下文在代码中补齐指令实现3种调用SHIFT的方式。DATA SEGM

36、ENT ADDR DW OFFSET SHIFTDATA ENDSSTACK1 SEGMENT PARA STACK DW 10H DUP(?)STACK1 ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK1BEGIN: MOV AX, DATA MOV DS, AX MOV BX, ADDR CALL _ MOV BX, OFFSET ADDR CALL _ CALL _ MOV AH, 4CH INT 21HSHIFT PROC NEAR SHIFT ENDPCODE ENDS END BEGIN6.15 用示意图表示下列程序执行时,堆

37、栈的变化情况。STACK1 SEGMENT PARA STACK DW 128H DUP (?) TOP LABEL WORDSTACK1 ENDSCODE SEGMENTASSUME CS:CODE, SS:STACK1BEGIN PROC FAR PUSH DS MOV AX, 0 PUSH AX PUSHF CALL SUB1 POPF RETBEGIN ENDPSUB1 PROC NEAR CALL FAR PTR SUB2 RETSUB1 ENDPCODE ENDSCODE1 SEGMENTSUB2 PROC FARPUSH CXPOP CXRETSUB2 ENDPCODE1 END

38、S END BEGIN6.16 编写程序,计算3!+4!+5!,并且将结果放入字变量RESULT中。6.17 求数组中10个有符号字节数据中最大值与最小值的差,结果存入字变量RESULT中,要求查找最大值与最小值分别用子程序来完成,并且分别利用寄存器传递参数、堆栈传递参数来实现。6.18 试编制程序,分别对NUM中各数统计出有多少个20,余下有多少个5,再余下有有多少个2,再余下有有多少个1。统计的各数分别存放在NUM20,NUM5,NUM2,NUM1的对应位置中,程序要求用主程序、子程序形式编制,而且用两种参数传递方法分别编制主程序和子程序。数据段如下:DATA SEGMENT NUM DW

39、 0133H, 0D5FH, 1234H COUNT EQU ($ - NUM)/TYPE NUM NUM20 DB COUNT DUP(0) NUM5 DB COUNT DUP(0) NUM2 DB COUNT DUP(0) NUM1 DB COUNT DUP(0)DATA ENDS习题七1. 试编制子程序,完成AAA,DAA,AAS,DAS的指令功能2. 试用两种不同方法,编制双精度(32位)求补程序3. 编制一程序,找出从2开始指定数以内的质数,并统计个数。4. 设-9A9,-13B13,-16C16,试编制求出方程A+B+C=0的全部整数解的程序。5. 现有字符串STRING,编制一个

40、程序,将指定范围内的字符清除。6. 编制程序,比较两个字符串STR1和STR2中所包含的字符是否相同?7. 编制一个程序,把从键盘输入的带符号十进制数转换为补码表示的二进制数。8. 编制一个程序,从键盘输入两位16进制数(输入时,有非十六进制数字符,则输入作废,重输),然后转换为3位八进制数,并在CRT上显示输出。9. 编写二进制数转换为P进制数子程序。10. 编写把P进制数转换为二进制数子程序。习题八1. 现有下列的程序段:CHANUM STRUC DA1 DB ? DA2 DW ?CHANUM ENDSDATA SEGMENT ORG 20H ASCI CHARNUM 4 DUP()DAT

41、A ENDS LEA ASCI, DI MOV CX, 04H MOV BL, ALOP: MOV DI.DA1, BL MOV AX, DI MOV DI.DA2, AX ADD BL, TYPE CHANUM.DA2 ADD DI, TYPE ASCI LOOP LOP上述程序运行后,结构变量ASCI中各字节单元的内容是什么?2. 现有结构定义如下:EXA STRUC DA1 DB ? DA2 DB ABC DA3 DB 2, 30H DA4 DW 5 DA5 DW 10 DUP (A)EXA ENDS试用该结构设置10H个结构变量。对于凡是能修改初值的结构变量字段预置结构时,原定义为数字

42、字段设置为0,原定义为字符串字段设置为等量的空格串。3. 编写完整的程序计算10名学生的英语、物理、数学三门课程的总分。要求用结构定义学生的学籍,学籍中至少包括姓名、学号、英语、物理、数学三门课程的成绩以及总分。按照总分从高到低对学生进行排序,并在屏幕上显示出来,显示的格式是:“姓名 学号 英语 物理 数学 总分”。4. 设有记录定义以及变量定义如下:REC1 RECORD F1:3=100B, F2:6, F3:4ABC REC1 试问记录变量ABC在内存中的内容是多少?5. 现有宏定义如下,试说明该宏完成什么功能?参数CHAR是什么数据类型?DISPCHAR MACRO CHARMOV AH, 2MOV DL, CHARINT 21HENDM6. 编写宏指令DISPLAY,它能将数据段的字符串(以“$”结尾)显示出来,字符串变量名作为实参。7. 编写宏指令MOVE DEST,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论