汇编语言课后习题及答案按章节超全面_第1页
汇编语言课后习题及答案按章节超全面_第2页
汇编语言课后习题及答案按章节超全面_第3页
汇编语言课后习题及答案按章节超全面_第4页
汇编语言课后习题及答案按章节超全面_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

`00第一章课外练习题一、单项选择题:1.从键盘输入的字符,在计算机内存储的是它的( A )(A)二进制编码 (B)四进制编码 (C)八进制编码(D)十六进制编码2.6位无符号二进制数能表示的最大十进制数是( B )。(A)64 (B)63 (C)32 (D)313.十进制数269变换为十六进制数是( C )。(A)10B (B)10C (C)10D (D)10E4.8位的微型计算机系统是以16位来表示地址,则该微机系统有(C )个地址空间。(A)255 (B)65535 (C)65536 (D)10485765.8位有符号二进制数能表示的最大十进制数是( D )。(A)256 (B)255 (C)128 (D)1276.十六进制数88H,可表示成下面几种形式,请找出错误的表示( D )。(A)无符号十进制数136 (B)带符号十进制数-120(C)压缩型BCD十进制数88 (D)8位二进制数-8的补码表示7.有一个数值152,它与十六进制数6A相等,那么该数值是( B )。(A)二进制数 (B)八进制数 (C)十进制数 (D)四进制数8.7位ASCII总共可表示( C )个符号。(A)256 (B)127 (C)128 (D)2559.4B的字长是( C )。(A)8位 (B)16位 (C)32位 (D)64位二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)1.字节通常用英文单词“Bit”来表示 (×)。2.目前广泛使用的Pentium计算机其字长为5个字节 (×)。3.存储器中将8个相邻的二进制位作为一个单位,这种单位称为字节 (√)。4.微型计算机的字长并不一定是字节的整数倍 (×)。三、填空题1.8位有/无符号整数的表示范围写成16进制形式为(80~~7F)/(00~~FF)。2.己知:计算机中有一个“01100001”编码,如果把它看作是无符号数,它是十进制什么数(97);如果认为它是BCD,则表示(01100001)BCD;认为它是某个ASCII,则代表(a3.若[X]补=X,则X为( 非负数)。4.(00101011)B+(13)D+(1B)H=(123)Q5.已知:A=10001011,B=11011010,求A∧B=(10001010);A∨B=(11011011)。6.已知:X=+0010011B,Y=-0111100B,试用补码完成真值(X+Y)=( 11010111);(X-Y)=(01001111)。7.十进制数的(731)=(011100110001)BCD。8.(011100110001)BCD=(731)十进制数。9.将一个0~9之间的数据转换为ASCII需加(30H)。10.大写英文字母转换为小写英文字母需加(20H)。11.英文字母“A”~“F”转换为十六进制数值A~F需要减(37H)。四、简答题1.什么是汇编语言?为什么要学习汇编语言?答:汇编语言是机器语言的符号表示形式。它不仅是计算机原理、操作系统等课程的必要先修课,而且对于训练学生掌握计算机工作原理、程序设计技术、熟练上机操作和程序调试技术都有重要作用。3.把下列二进制数转换成十进制数。①1101.01=13.25②111001.00011=57.9375③111.001=7.125④1010.1=10.55.把下列十六进制数转换成十进制数。①A6.DC=166.②9AC.BD=2476.③B4A.8D=2890.④1AC.0A6.把下列英文单词转换成ASCII编码的字符串。①Water=5761746572②Great=4772656174③Good=476F6F64④After=41667465727.回车键、空格键的ASCII代码及其功能是什么?答:0DH、20H。字符从头开始、空一个字符的位置。第二章课外练习题一、单项选择题:1.下列四个寄存器中,哪个寄存器在程序设计中是不可省略的(A)。(A)CS (B)DS (C)ES (D)SS2.指令movax,10[si]的源操作数字段的寻址方式是(C)。(A)寄存器寻址 (B)寄存器间址 (C)变址寻址 (D)基址寻址3.8086∕8088CPU中可用作寄存器间址的寄存器是(B)。(A)BX、SI、DI (B)BX、BP、SI、DI(C)BX、IP、SI、DI (D)BX,DX,SI,DI4.指令mov100[si][bp],ax目标操作数的隐含段为(B)。(A)数据段 (B)堆栈段 (C)代码段 (D)附加段第二章课外练习题一、单项选择题:1.下列四个寄存器中,哪个寄存器在程序设计中是不可省略的(A)。(A)CS (B)DS (C)ES (D)SS2.指令movax,10[si]的源操作数字段的寻址方式是(C)。(A)寄存器寻址 (B)寄存器间址 (C)变址寻址 (D)基址寻址3.8086∕8088CPU中可用作寄存器间址的寄存器是(B)。(A)BX、SI、DI (B)BX、BP、SI、DI(C)BX、IP、SI、DI (D)BX,DX,SI,DI4.指令mov100[si][bp],ax目标操作数的隐含段为(B)。(A)数据段 (B)堆栈段 (C)代码段 (D)附加段二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)当SP,BP,SI,DI用于指针和变址寄存器使用时;①SP中所含的偏移地址是堆栈段中的偏移地址。 (√)②BP、SI、DI所含的偏移地址是数据段中的偏移地址。 (×)奇偶标志位PF,当运算结果的低8位中有偶数个1时,被置为0。(×)零标志位ZF,当运算结果为0时,被置为0。 (×)符号标志位SF,在运算结果为负时被置为1。 (√)三、填空题1.在8086/8088CPU中,有许多寄存器,他们是通用寄存器:(AX)(BX)(CX)(DX);指针和变址寄存器:(SP)(BP)(SI)(DI);段寄存器:(CS)(DS)(SS)(ES);指令指针:(IP)还有一个标志寄存器:(PSW),他们都是(16)位的。2.IBMPC机内存容量最大为(1M)B,要寻找这样大的空间,需要(20)根地址线。3.每个逻辑段的最大长度为(64KB)。4.在IBMPC机中,有4个专门存放段地址的寄存器,称为段寄存器,请写出以下段寄存器的符号:代码段寄存器:(CS) 数据段寄存器:(DS)堆栈段寄存器:(SS) 附加段寄存器:(ES)四、简答题1.IBMPC的存储器为什么采用分段结构?答:是因为要寻找20位存储器地址的需要。使用两个十六进制的寄存器做一个寻找20位寄存器工作的一种方法。2.什么是逻辑地址?什么是物理地址?如何由逻辑地址计算物理地址?答:逻辑地址是由两部分组成的,即段的基地址和偏移地址。程序员在编写程序时使用的都是逻辑地址。物理地址就是内存单元中的一个惟一的20位二进制数表示的地址,物理地址的范围是从00000H到FFFFFH。CPU与存储器进行数据交换时所使用的地址就是物理地址。物理地址=段地址×16D+偏移地址。3.如果在一个程序段开始执行之前,CS=0A7F0H,IP=2B40H,试问该程序段的第一个字的物理地址是多少?答:物理地址=段地址×16D+偏移地址=0A7F0H×4.一个有16个字的数据区,它的起始地址为70A0:DDF6,那么该数据区的最后一个字单元地址是多少?答:=DDF6H+20H-2H(16个字=32个字节=20H个字节)=DE14即70A0::DE145.哪些寄存器可以用来指示存储器地址?答:BX、BP、SI和DI。6.有一个由20个字组成的存储区,其起始处段地址为4701H,偏移地址为2012H。试写出该存储区首单元和末单元的物理地址。答:该存储区末单元的偏移地址=2012H+28H-2(20个字=40个字节=28H个字节)=2038H。即首单元和末单元的物理地址为49022H和49048H。7.8086微处理器由哪几部分组成?各部分的功能是什么?答:8086/8088微处理器由两大部分组成:总线接口单元BIU和执行单元EU。①BIU:负责与存储器接口,即CPU与存储器之间的信息传送。即:BIU从内存的指定部分取出指令,送至指令队列排队。从内存的指定部分取出执行指令时所需的操作数,送至EU部分。②EU:负责指令的执行。8.简述8086CPU的寄存器组织。答:8086/8088CPU的寄存器是由①通用寄存器②控制寄存器③段寄存器组成。9.试述8086CPU标志寄存器各位的含义与作用。答:它含有9个有用的标志位(其余7位不用),用于记录指令操作后的结果状态信息或控制处理器操作的标志。其含义与作用如下:进位标志C(CarryFlag)——当加减运算操作后,结果的最高位产生一个进位或借位,则C=1,否则C=0。各种移位指令,逻辑操作指令等也可影响CF的状态。CF位也可表示无符号数的溢出。溢出标志O(OverflowFlag)——在算术运算中,带符号数的运算结果超出机器所能表示的数据范围称为溢出,当溢出发生时,则O=1,否则O=0。带符号数的数据范围。8位运算时为:﹣128~+127;16位:﹣32768~+32767。符号标志S(SignFlag)——若运算结果的最高位(D15或D7)为1,则S=1,否则S=0。零标志Z(ZeroFlag)——若运算的结果为0,则Z=1,否则Z=0。奇偶标志P(ParityFlag)——若运算结果中‘1’的个数为偶数,则P=1,否则P=0。辅助进位标志A(AuxitiaryCarryFlag)——记录运算时第3位(半个字节)产生的进位值,若第3位产生进位,则A=1,否则A=0。在执行BCD调整时使用此标志。方向标志DF(DirectionFlag)——用于在串处理指令中控制处理信息的方向。当DF=1时,每次操作后使变址寄存器SI和DI减小,这样就使得串处理操作从高地址向低地址方向处理。当DF=0时,则使SI和DI增大,使得串处理从低地址向高地址方向处理。中断标志IF(InterruptFlag)——当IF=1时,允许CPU响应可屏蔽中断请求,否则关闭中断。陷阱标志TF(TrapFlag)——又称单步跟踪。用于调试时的单步方式操作。当TF=1时,每条指令执行完后产生陷阱,由系统控制计算机;当TF=0时,CPU正常工作,不产生陷阱。10.指出下列MOV指令的源操作数的寻址方式。MOV AX,1234H=立即MOV AX,BX =寄存器MOV AX,[BX] =寄存器间接MOV AX,TABLE;TABLE是一个变量名 =直接MOV AX,[1234H] =直接MOV AX,[BX+1234H] =基址MOV AX,[BP][SI] =基址变址MOV AX,[BX+SI-1234H] =基址变址=21234H=20100H=2010AH=10010H=10012H11.设(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址为2000A=21234H=20100H=2010AH=10010H=10012HMOV AX,[1234H]MOV AX,[BX]MOV AX,TABLE[BX]MOV AX,[BP]MOV AX,[BP][SI]12.已知:BX=1234H,BP=5678H,SI=1357H,DS=0925H,SS=0468H,CS=4B10H,指出下述指令中存储器操作数的有效地址和实际地址。有效地址实际地址①MOVAL,[BX]1234H0A484H②MOVAH,[BP]5678H0ACF8H③MOVBH,CS:[SI]1357H4C457H④MOVDL,[SI+10H]1367H0A5B7H⑤MOVCH,[BP+20H]5698H09D18H⑥MOVCL,SS:[SI+50H]13A7H05A27H⑦MOVBL,DS:[BP+30H]56A8H0E8F8H⑧MOV[BP+SI+30H],AH68DCH0B07FH⑨MOV[BX+SI-40H],AH254BH0B79BH⑩MOVCS:[BX+SI],DH258BH4D68BH13.有两个16位字1EE5H和2A3CH分别存放在80x86微机存储器的000B0H和000B3H单元中。请用图表示出它们在存储器里的存放情况。地址内容000B0HE5H000B1H1EH000B2H000B3H3CH000B4H2AH地址内容2010012H2010134H2010256H2010378H┆┆212002AH212014CH212020B7H2120365H习题14示意图14.有关寄存器及存储单元的内容如下:=1200H=0100H=1200H=0100H=4C2AH=3412H=4C2AH=7856H=65B7H基址变址①MOV AX,1200H ②MOV AX,BX ③MOV AX,[1200H]④MOV AX,[BX] ⑤MOV AX,1100[BX]⑥MOV AX,[BX][SI]⑦MOV AX,1100[BX][SI]第三章课外练习题一、单项选择题:1.以下语句汇编后,CENTH的值是(A)。buf1 dw 8,19buf2 db 6,'abc$',10dup('5')CENTH equbuf2—buf1(A)4 (B)8 (C)14 (D)172.在DEBUG环境下查看机器指令使用(B)命令;显示内存数据使用(E)命令。(A)G (B)U (C)T (D)A (E)D (F)E (G)R二、填空题:1.写出下列各语句在存储器中分别为变量分配多少字节,并填入括号内。DATA SEGMENTNUM1 DW 20 ( 2 )NUM2 DB ‘31H,32H,33H’ ( 11 )NUM3 EQU 10H ( 0 )NUM4 DB NUM3 DUP(0) ( 10H )DATA ENDS2.某程序的数据段定义如下:DATASG SEGMENTPARTLIST DB‘PART#’DB 60DB‘PRICE’DB0125DB‘DESCRIPTION’DB‘RADIO’LISTLENG EQU($-PARTLIST);数组长度,用表达式表示DATASG ENDS3.有符号定义语句如下:BUFF DB 1,2,3,‘123EBUFF DB 0L EQU EBUFF-BUFF问L的值是( 6 )。4.下边是汇编语言程序上机步骤,请填写出完成各步骤使用的系统程序的文件名字,并按照正确步骤给出操作顺序号。操作名称 文件名 操作顺序汇编(MASM ) (2)编辑(EDIT ) (1)连接(LINK ) (3)调试(DEBUG ) (4)5.自内存0F00:0006开始的内存单元中存放着8032569876B5这六个十六进制数据,试分别写出0F00:0008的字节型数据,字型数据、双字型数据的值。字节型: (56 )字型: (9856 )双字型: (B5769856 )6.对于如下所示的数据定义,各指令语句的执行结果是什么(以十六进制数表示)?VR1 DB -38,'456',?VR2 DW 6,5DUP(2)①MOVAL,VR1(-38)②ADD VR2,59 (65 )③MOV BL,VR1+2 (53 )7.对于第6小题,为VR1变量分配了(5)个字节,为VR2变量分配了(12)个字节。8.汇编源程序的文件扩展名是(.ASM)。9.以下语句汇编后,count的值是(9)。Buf1 db3,5,'abcd$'Buf2dw0fabHCountequ$-buf110.保存当前栈顶地址的寄存器是(SP)。11.在程序运行时执行的语句是(指令)语句,它告诉CPU要执行的操作。12.(伪指令)语句是由汇编程序在汇编过程中执行的语句。三、判断题(判断每题正误,正确的在题后括号内划“√”,错误的划“×”)1.汇编语言是用指令的助记符、符号地址、标号等符号书写程序的语言。 (√)2.通过ASSUME伪指令给段寄存器赋初值。 (×)3.在汇编语言中当缺省为十进制数时,表示十六进制数要用H结尾。 (√)4.在DEBUG中,缺省值为十进制数。 (×)5.在标志IF=0时,CPU忽略所有的中断请求。 (√)四、简答1.标号具有哪3种属性?该3种属性的属性值分别表示什么?答:标号具有三种属性:段、偏移和类型属性。①段属性:定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在CS寄存器中。段属性值可以用SEG算符求得。②偏移属性:标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。标号偏移量属性值可由OFFSET算符求得。③类型属性:类型属性用来指出该标号是在本段内引用还是在其他段中引用的。标号类型值可用TYPE算符求得。第四章课外练习题一、单项选择题:1.若栈顶的物理地址为20100H,当执行完指令PUSHAX后,栈顶的物理地址为(D)。(A)20102H (B)20101H (C)200FFH (D)200FEH2.下列指令执行后,DAB中第一个字的内容是(B)。DAB DB 0FAH,0DAH,0F5H,0D0H,5HDAB_l equ $-DAB┆MOV AL,DAB_LXCHG DAB,AL(A)05DAH (B)0DA05H (C)0F5DAH (D)0DAF5H3.执行下列指令后,正确的结果是(B)。MOV AL,100MOV BL,-2(A)AL=100H,BL=02H (B)AL=64H,BL=0FEH(C)AL=64H,BL=82H (D)AL=100H,BL=0FEH4.完成同指令XCHG AX,BX相同功能的指令或指令序列是(D)。(A)MOV AX,BX (B) MOV BX,AX(C)PUSH AX (D) MOV CX,AXPOPBX MOV AX,BXMOV BX,CX5.为了使MOVAX,VAR指令执行后,AX寄存器中的内容为4142H,下面哪一条数据定义会产生不正确的结果?(C)(A)VARDW4142H (B) VARDW16706(C)VARDB42H,41H (D) VARDW‘AB’6.假定用伪指令DATA DB12H,34H定义了两个字节数据,现需要将数据12H取入寄存器AL,将数据34H取入寄存器AH,能完成此功能的程序段是(D)。(A) MOVAX,DATA (B) MOVSI,DATAMOVAX,[SI](C) LEASI,DATA (D) MOVSI,OFFSETDATAMOVAX,[SI]MOVAL,[SI]MOVAH,[SI]MOVAH,[SI+1]7.POP指令的操作数不能是(D)。(A)BP (B)[BX] (C)字变量的SUM (D)CS二、简答题1.设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令序列,要求使用以下几种寻址方式:①直接寻址; (MOVAX,ARRAY+8)②寄存器间接寻址; (LEABX,ARRAY+8和MOVAX,[BX])③变址寻址; (MOVSI,8和MOVAX,ARRAY[SI])④基址变址寻址。 (LEABX,ARRAY及MOVSI,8和MOVAX,[BX][SI])2.设有以下程序段,求执行完此程序段后AL寄存器中的内容。(12H)ABC EQU 2DATA1 DB 20HDATA2 DW 1234H┆MOV AL,DATA1+ABC3.下列每组指令有何区别?①MOVAX,1234H AX←1234HMOV AX,[1234H] AX←1234H的地址②MOVAX,TABLE AX←TABLE的数据MOV AX,[TABLE] AX←TABLE的数据③MOV AX,TABLE AX←TABLE的数据LEAAX,TALBE AX←TABLE的地址④MOVAX,BX AX←BX的内容MOV AX,[BX] AX←BX的地址里的内容4.写一指令序列,将3456H装入DS寄存器。MOV AX,3456HMOV DS,AX5.不可以从堆栈向哪个段寄存器弹出数据?答:CS6.若(SS)=2000H,(SP)=000AH,先执行将字数据1234H和5678H压入堆栈的操作,再执行弹出一个字数据的操作,试画出堆栈区及SP的内容变化过程示意图(标出存储单元的物理地址)。内容堆栈地址内容堆栈地址内容堆栈地址20006H执行后SP78H20006H78H20006H20007H56H20007H56H20007H20008H34H20008H最后SP34H20008H20009H12H20009H12H20009H执行前SP2000AH2000AH2000AH7.在8086∕8088微处理器中,PUSH和POP指令在堆栈与寄存器或存储单元之间传送数据时,一次总是传送多少字节?答:2字节。8.解释XLAT指令是怎样转换AL寄存器中的内容的。并编写一段程序用XLAT指令将BCD码的0~9转换成对应的ASCII,并将ASCII存入数组ARRAY中。答:XLAT指令是通过AL寄存器加上BX寄存器联合组成的寻址方式找到目标地址后,将内容传送到AL寄存器中。程序如下:.MODEL SMALL.STACK.DATABCD DB -7BCD2ASCTAB DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39HARRAY DB ?.CODE.STARTUPMOV AL,BCDLEA BX,BCD2ASCTABXLATMOV ARRAY,AL.EXIT 0END9.下列ASCII字符串(包括空格符)依次存储在首地址为CSTRING的字节单元中:CSTRING DB ‘BASED ADDRESSING’请编写指令将字符串中的第一个和第七个字符传送给DX寄存器。MOV DL,CSTRINGMOV DH,CSTRING+610.请编写指令将BX寄存器初始化为变量MYDAT的偏移地址。MOV BX,OFFSETMYDAT或LEABX,MYDAT11.将变量名TABL的段地址送AX的指令是什么?MOV AX,SEGTABL12.设MEM是数据段中0A00H单元的符号名,其中存放的内容为0B0CH,以下各指令语句的执行结果是什么?①MOV AX,MEM 答: 0B0CH②LEA BX,MEM 0A00H三、程序分析题1. A DW 1234HB DW 5678H┆PUSH APUSH BPOP APOP B试回答:①上述程序段执行后(A)=5678H,(B)=1234H②执行前SP=200H,执行后SP=200H四、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)1.MOV ES,BX (√)。2.MOV CS,BX(×)。3.IN AL,DX (√)。4.POPF AX (×)。5.POP 1234 (×)。6.PUSH A(A为字节单元) (√)。7.执行LEABX,TABLE与执行MOVBX,OFFSETTABLE效果一样 (√)。8.当执行LAHF和SHAF两条指令后,标志位不改变 (×)。第五章课外练习题一、单项选择题:1.假定AX的内容为-32768,在执行了指令NEGAH后,标志位(SF,OF)为(D)。(A)0,0 (B)0,1 (C)1,0 (D)1,12.已知AL,BX为带符号数,计算AL×BX的乘积,使用下述程序段(D)(A) MOVAH,0MULBX(B) MOVAH,-1IMULBX(C) MOVAH,0IMULBX(D) CBWCBW指令进行字节和字的混合运算字节--字IMULBXCWD------字-双字3.已知AL,BX为无符号数,计算AL×BX的乘积,使用下述程序段(C)(A)MULBX (B)IMULBX (C) MOVAH,0(D)CBWMULBXMULBX无符号数不能用CBW4.当执行指令ADDAX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是(A)。(A)表示结果中含1的个数为偶数 (B)表示结果中含1的个数为奇数(C)表示该数为偶数 (D)表示结果中低八位含1的个数为偶数5.设AH=0,AL=06H,BL=09H,执行下列两条指令之后,其结果应是(A)。ADD AL,BL AAAAL寄存器的低四位在A和F之间,或AF标志是1,加6调整,AH加1(A)AH=01,AL=05 (B)AH=1,AL=15(C)AH=0,AL=0FH (D)AH=0,AL=056.设AL=0B4H,BL=11H,指令“MULBL”和指令“IMULBL”分别执行后OF,CF的值为(B)。(A)OF=1,CF=0 (B)OF=1,CF=1(C)OF=0,CF=0 (D)OF=0,CF=17.当执行完下列两条指令后,标志位CF和SF的值为(D)。MOVAL,0C4HADDAL,9DH(A)0,0 (B)1,1 (C)0,1 (D)1,0二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)1.ADD[SI],[BX](×)2.ADDAX,100(√)3.ADDAX,BL(×)4.ADD[SI],100(√)5.ADD ES, BX ( √ )6.INC [BX] ( √ )7.SUB BYTE PTR [SI],1 ( √ )8.DEC [BX],1 ( × )三、指出下列指令中的错误,并写出与该条指令意义相近的所有可能的正确指令。1.ADDBH,AX(类型错误。改正:ADDBX,AX)2.SUB100H,AX(立即数不可做目标操作数。改正:SUBAX,100H)3.MOVDS,100H(立即数不可以直接向段寄存器送数。改正:MOVAX,100H和MOVDS,AX)4.MOV[DI],[100H](两个操作数不可以同时是存储器中的数。改正:MOVAX,[100H]和MOV[DI],AX)5.INC100H(立即数不可做目标操作数。改正:MOVAX,100H和INCAX)6.MOVAL,ARRAY[BX][BP](没有此寻址方式。改正:MOVAL,ARRAY[BX][SI])7.ADD[BX],[SI](两个操作数不可以同时是存储器中的数。改正:MOVAX,[SI]和ADD[BX],AX)四、填空题1.当执行MULBX指令后,乘积的高半部分在(DX)中,低半部分在(AX)中。2.当执行DIVBX指令后,被除数在(DX,AX)中,所得商在(AX)中,余数在(DX)中。3.已知AL,BL中数据为无符号数,若求AL∕BL的商,应使用指令序列为:(MOVAH,0)和(DIVBL)。4.已知AL,BL中数据为带符号数,若求AL∕BL的商,应使用指令序列为:(CBW )和( IDIV )。5.用一条语句实现AX的内容加1,要求不影响CF(INCAX )。6.将AX的内容,减去0520H,和上次运算的借位,选用(SBBAX,0520H)指令。7.在SUBAX,BX指令执行后,CF=1,说明:①最高有效位(有借位)。②对(无符号)数,操作结果溢出。五、简答题1.写一指令序列,完成将存于AX、BX中的压缩BCD数加到存于CX、DX中的8位BCD数上的操作。PUSH AXMOV AL,BLADD AL,DLDAAMOV DL,ALMOV AL,BHADC AL,DHDAAMOV DH,ALPOP BXMOV AL,BLADC AL,CLDAAMOV CL,ALMOV AL,BHADC AL,CHDAAMOV CH,AL第六章课外练习题一、单项选择题:1.JMP SI的目标地址偏移量为(A)。(A)SI的内容 (B)SI所指向的内存字单元之内容(C)SI+IP的内容 (D)IP+[SI]2.JMP WORDPTR[BX]转移的目标地址是(D)。(A)BX的内容 (B)SP+BX之和(C)IP+[BX]之和 (D)BX指出的内存单元之内容3.当A≥B时转移的条件转移指令为(A,B为带符号数)(D)。(A)JA (B)JAE (C)JG (D)JGE4.已知X,Y为带符号数,两个数比较后,欲判断X≤Y发生转移,应使用(C)指令。(A)JBE (B)JL (C)JNG (D)JNA5.假定AX和BX寄存器中存放的是有符号整数,如果AX>BX则转移到LABEL,应采用下面哪一条指令序列?(D)。(A) SUBAX,BX (B) SUBAX,BXJCLABELJNCLABEL(C) CMPAX,BX (D) CMPAX,BXJALABELJGLABEL6.已知AX=8078H,BX=5610H,指令CMP BL,AH执行后OF,CF的值为(D)(A)0,0 (B)0,1 (C)1,0 (D)1,17.在汇编下列条件转移指令中,两条指令功能不一样的是(D)。(A)JZ 与JE (B)JC与JB (C)JA与JNBE (D)JP与JS8.循环指令LOOPNZ终止循环的条件是(B)。(A)CX=0,且ZF=0 (B)CX=0,或ZF=1(C)CX<>0,且ZF=0 (D)CX<>0,或ZF=19.在循环次数已知的情况下,采用哪种方法控制循环程序最方便(A)。(A)计数法 (B)条件控制法10.循环控制指令隐含指定哪个寄存器作为循环计数器(B)。(A)CL (B)CX (C)AL (D)AX二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”):1.两个数相等时进行转移可用JZ指令(√)2.当PF=1时发生转移的条件转移指令为JPO (×)3.当X<Y(X,Y为无符号数)时发生转移的条件转移指令有JB和JC (√)4.满足指令JSLAB的执行条件,则表示上一条指令运算的结果为负数 (√)5.JS [BX](×)6.JMP AL(×)三、填空题1.当两个数不相等时,发生转移的条件转移指令有JNE和(JNZ)。2.当PF=0时,发生转移的条件转移指令为JNP和(JPO)。3.当A≥B(A,B为无符号数)时,发生转移的条件转移指令有(JAE)(JNB)。AXBX程序转向14C6H80DCHL1B568H54B5HL142C8H608DHL2D023H9FD0HL59FD0HD023HL5习题4示意图4.设有下列程序段:ADD AX,BXJNO L1JNC L2SUB AX,BXJNC L3JNO L4JMP SHORT L5如果AX和BX的内容如习题4图形,则该程序分别执行后,程序转向哪里?四、程序分析题1.阅读如下程序,回答所提出的问题,假定X1,X2,...Xn为无符号数。.MODEL SMALL.STACK.DATABLOK DWX1,X2,..,XnCOUNT EQU($-BLOK)/2RESULT DWCOUNT,?.CODE.STARTUPLEA BX,BLOK-2MOV CX,RESULTXOR AX,AXGOON:ADD BX,2CMP AX,[BX]JAE NEXTMOV AX,[BX]NEXT:LOOP GOONMOV RESULT+2,AX.EXIT 0END程序执行完,回答下述问题:RESULT+2字存储单元的内容=MAX(X1,X2,..,Xn)程序循环次数=(COUNT)[BX]=(Xn)2.下列程序完成的是什么功能?(SUMn=|BUF1n|+|BUF2n|。两个数组BUF1和BUF2对应位绝对值之和存入SUM对应位)LEA SI, BUF1LEA BX, BUF2LEA DI, SUMMOV CX, 100AGAIN:MOV AX, [SI]CMP AX, 0JGE K1NEG AXK1:MOV DX, [BX]CMP BX, 0JGE K2NEG BXK2:ADD AX, DXMOV [DI], AXADD SI, 2ADD DI, 2ADD BX, 2LOOP AGAIN3.下列程序完成的是什么功能?(DATX1数组中后100个数送DATX2数组中)DATX1 DB 300DUP(?)DATX2 DB 100DUP(?)┆MOV SI,0MOV DI,0MOV BX,200MOV CX,100NEXT:MOV AL,DATX1[BX][SI]MOV DATX2[DI],ALINC SIINC DILOOP NEXT4.假设X和X+2单元的内容为双字数据P,Y和Y+2单元的内容为双字数据Q(X单元与Y单元为低位字),说明下列程序段完成什么工作?()如果2倍P的高16位>Q的高16位,则AX=1如果2倍P的高16位<Q的高16位,则AX=2如果2倍P的高16位>Q的高16位,则AX=1如果2倍P的高16位<Q的高16位,则AX=2如果2倍P的高16位=Q的高16位,则判断如果2倍P的低16位≤Q的低16位,则AX=2;否则AX=1MOV AX,XADD AX, XADC DX,X+2CMP DX,Y+2JL L2JG L1CMP AX,YJBE L2L1: MOV AX,1HLTL2: MOV AX,2HLT5.指出以下程序执行后ANS的内容是什么?(在三个带符号数中求最大数。即ANS=1240H)DSEG SEGMENTD1 DW 9CC0HD2 DW 1240HD3 DW 0620HANS DW ?DSEG ENDSCSEG SEGMENTASSUME DS:DSEG,CS:CSEGSTART:MOV AX,DSEGMOV DS,AXMOV AX,D1CMP AX,D2JG CMP13MOV AX,D2CMP AX,D3JG OKD3G: MOV AX,D3JMP OKCMP13: CMP AX,D3JL D3GOK: MOV ANS,AXMOV AH,4CHINT 21HCSEG ENDSEND START6.下述程序段运行后,S9开始的10个字节存储单元内容是什么?(1,0,3,2,5,4,7,6,9,8)DATASEGMENTS9DB0,1,2,3,4,5,6,7,8,9DATAENDS┆LEASI,S9LEADI,S9+1MOVCX,5LOP:MOVAL,[SI]XCHGAL,[DI]MOV[SI],ALADDSI,2ADDDI,2DEC CXJNZLOP7.指出下列程序段执行后AL内容是什么?①┆(60H) MOV AL,60H CMP AL,0BBH JB L2 L1:MOV AL,0BBH L2:NOP ;NOP为空操作②┆(61H) MOV AL,60H CMP AL,0BBH JL L2 L1:INC AL L2:NOP ;NOP为空操作③┆(0FFH) XOR AL,ALMOV BL,98H ADD BL,88H JNC L2 L1:DEC AL L2:NOP ;NOP为空操作④┆(0) XOR AL,ALMOV BL,98HADD BL,88HJNO L2 L1:MOV AL,0 L2:NOP ;NOP为空操作8.指令序列为: CMP AX,BX JX L1请在能引起转移到L1单元的条件转移指令下面划“√”,AXBXJBJNBJBEJNBEJLJNLJLEJNLE①1F52H1F52H√√√②88C9H88C9H√√√③FF82H007EH√√√√④58BAH020EH√√√√⑤FFC5HFF8BH√√√√⑥09A0H1E97H√√√√⑦8AEAHFC29H√√√√⑧D367H32A6H√√√√五、编程题1.将AX寄存器中的16位数分成4组,每组4位,然后把这4组数分别放在AL、BL、CL和DL中的最低4位。MOV CL,4MOV DL,ALAND DL,0FHMOV BL,AHAND BL,0FHROL AX,CLAND AL,0FHMOV CL,AHAND CL,0FH2.将BUF有符号双字节数据区中的最大数及最小数分别送MAX及MIN存储单元。.数据段BUF DW 1010H,2030H,19H,5555H,3435H,0FFFFHCOUNT EQU ($-BUF)/2MAX DW ?MIN DW ?.代码段MOV CX,COUNTDEC CXOUTLP: MOV DX,CXLEA BX,BUFINLP: MOV AX,[BX]CMP AX,[BX+2]JL NEXTXCHG AX,[BX+2]MOV [BX],AXNEXT:ADD BX,2DEC DXJNZ INLPLOOP OUTLPmovax,buf[0]movbx,buf[count+count-2]movmin,axmovmax,bx3.已知一多字节数据存放在内存DATA开始的连续单元中,数据长度在LEN单元,编制程序计算其绝对值并存入原单元。MOV SI,0MOV CX,LENMOV AL,DATA[LEN-1]CMP AL,0JGE QUIT0CLCAGAIN:MOV AL,0SBB AL,DATA[SI]movdata[si],alINC SILOOP AGAINQUIT0: NOP4.编制程序,将一个包含有20个数据的数组M分成两个数组:正数组P和负数组N。MOV BX,0MOV SI,0MOV DI,0MOV CX,20AGAIN:MOV AL,M[BX]CMP AL,0JL FSMOV P[DI],ALINC DIJMP OKFS: MOV N[SI],ALINC SIOK: INC BXLOOP AGAIN5.在首地址为DATA的数组中,存放了100H个16位补码数。求出它们的平均值放在AX寄存器中,并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。MOV AX,0MOV SI,0MOV CX,100AGAIN:ADD AX,DATA[SI]ADDSI,2LOOP AGAINMOV DX,0MOV CX,100IDIV CX ;AX为平均数MOV BX,0MOV SI,0MOV CX,100AGA: CMP AX,DATA[SI]JGE NEXTINC BX ;BX为小于AX的个数NEXT: ADD SI,2LOOP AGAIN16.编写程序,求出首地址为DATA的100字无符号数组中的最小偶数,并把它存放AX中。MOV AX,0FFFFH ;假设FFFFH是本数组中的最小偶数MOV SI,0MOV CX,100AGAIN:MOV BX,DATA[SI]TEST BX,1JNZ NEXTCMP AX,BXJB NEXTMOV AX,BXNEXT: ADD SI,2LOOP AGAIN7.设有一段英文,其字符变量名为ENG,试编写一个程序,查对单词READ在该文中出现次数并存放在BX寄存器中。.Modelsmall.Stack.Dataengdb'sNNREADRAREADunSUN'cntengequ$-engkeyworddb'READ'cntkeyequ$-keyword.Code.StartuppushdspopesXORalleabx,engmovdx,cntengsubdx,cntkeyincdxcldagain:movdi,bxleasi,keywordmovcx,cntkeyrepzcmpsbjnzlop1incallop1:incbxdecdxjnzagain.Exit0End8.测试AL寄存器的最低位是否为0,若为0,跳转到B1,否则,跳转到B2。TEST AL,1JZ B1JMP B29.比较两个字符串STARING1和STARING2所含字符是否完全相同,若相同则显示“MATCH”,不同则显示“NOMATCH”。.MODELSMALL.STACK.DATANO_MA DB‘NO_MATCH’,0DH,0AH,’$’MAT DB‘MATCH’,0DH,0AH,’$’.CODE.STARTUPMOV SI,0MOV DI,0MOV CX,COUNTAGAIN:MOV AL,STRING1[SI]CMP AL,STRING2[DI]JZ MAMOV DX,OFFSETNO_MAMOV AH,9INT 21HJMP OKMA: INC SIINC DILOOP AGAINMOV DX,OFFSETMATMOV AH,9INT 21HOK:.EXIT0END10.设在变量单元A、B和C中存放有三个数,若三个数都不为0,则求出三个数之和存入D中;若有一个为0,则将其他两个单元也清零,请编写此程序。MOV AX,ACMP AX,0HJZ NEXTMOV BX,BCMP BX,0HJZ NEXTMOV CX,CCMP CX,0HJZ NEXTADD D,AXADD D,BXADD D,CXJMP OKNEXT: MOV A,0MOV B,0MOV C,0OK: NOP11.设变量X为带符号整数,试按下面的要求编制此程序:①如果X的绝对值大于5,变量FX赋值为零。②如果X的绝对值不大于5,变量FX赋值为1—XMOV FX,0MOV AX,XCMP AX,0HJG NEXTNEG AXNEXT: CMP AX,5JA OKNEG AXADD AX,1MOV FX,AXOK: NOP12.编制程序计算(见下图):设X,Y为双字节带符号数据,分别存放在DAX,DAY单元,计算结果存入RLT单元。X×Y(Y>0,X>0)S=X÷Y(Y<0,X<0)|X+Y|(其它)MOV AX,DAXMOV BX,DAYCMP AX,0HJL NEXTCMP BX,0HJL QTIMUL BXJMP OKNEXT: CMP BX,0JGE QTMOV DX,0IDIV BXJMP OKQT: ADD AX,BXJNS OKNEG AXOK: MOV RLT,AX第七章课外练习题一、单项选择题:1.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是(A)。(A)MOVAL,00H (B)ANDAL,00H(C)XORAL,AL (D)SUBAL,AL2.下列指令执行后总是使CF=0,OF=0的是(A)。(A)AND (B)NEG (C)NOT (D)INC3.若(AX)=10101101B,为了使其内容变为01010010B,下列(A)指令执行一次即可完成此操作?(A)NOT指令 (B)OR指令 (C)AND指令 (D)XOR指令4.实现将DX:AX中存放的32位数扩大四倍,正确的程序段是(C)。 (A)SHLAX,2 (B) RCLAX,2ROLDX,2 SHLDX,2 (C)MOVCX,2 (D) SHLAX,1 LOP:SHLAX,1 SHLAX,1 RCLDX,1 RCLDX,1 LOOPLOP RCLDX,15. TA1DW0102H,0304H,0506HTA2 DB02H,04H,06H┆MOVBX,offsetta1addbL,TA2+2movbx,[bx]ANDBX,0FFHaddBH,byteptrta1[BX]上述指令序列运行后,BX的内容是(B)。(A)0605H (B)0402H (C)0606H (D)0204H6.NEXT是某指令语句标号,下述哪个程序段不能实现转移到NEXT语句执行(C )。(A) JMP NEXT (B) MOV BX,OFFSETNEXT JMPBX(C) MOV BX,NEXT (D) LEA AX,NEXT JMP BX JMP AX7.测试BL内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的是(D )。(A) TEST BL,4FH (B) OR BL,4FHJZNEXTJZNEXT(C) AND BL,4FH (D) XOR BL,4FHJZNEXTJZNEXT8.下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,括号处的指令应为(A )。TEST BH,01H( ) K1(A)JNE (B)JZ (C)JS (D)JC9.下面指令序列测试BX中的数是否为负数,若为负数则转移至F1处,不正确的指令序列应为(C )。(A) TEST BX,8000H (B) AND BX,BXJNZ F1 JS F1(C) CMP BX,0H (D) SUB BX,0H JNS F1 JL F110.编写分支程序,在进行条件判断前,可用指令构成条件,下列指令中不能形成条件的指令是(D )。 (A)CMP (B)SUB (C)AND (D)MOV11.为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是(D)。(A) INCCX (B) SUBCX,0FFFFHJZMINUS

JZMINUS(C) ANDCX,0FFFFH (D) XORCX,0FFFFHJZMINUSJZMINUS二、程序分析题1. AND AL,ALJZ BRCH1RCR AL,1JZ BRCH2RCL AL,1INC ALJZ BRCH3┆上述程序运行后,请回答:①当AL=( 0 )时,程序转向BRCH1;②当AL=( 1 )时,程序转向BRCH2;③当AL=( -1 )时,程序转向BRCH3。2.现有下列程序段:MOV AX,6540HMOV DX,3210HMOV CL,04SHL DX,CLMOV BL,AHSHL AX,CLSHR BL,CLOR DL,BL试问上述程序段运行后,(AX)=(5400H),(BL)=(06H)(DX)=(2106H)3.分析下面程序段:MOV AL,200SAR AL,1MOV BL,ALMOV CL,2SAR AL,CLADD AL,BL试问程序段执行后(BL)=(0E4H),(AL)=(0DDH)4.程序段如下:BLK1 DB 46,84,34,-5,20,122,73┆MOV CX,7LEA SI,BLK1NEXT: MOV AL,[SI]INC SITEST AL,81HLOOPZ NEXTMOV BL,[SI]请回答程序段运行后:(AL)=(0FB)H,(BL)=(14)H四、用最少的程序编写下列程序段:1.编写完成下列功能的小程序段:⑴ 将寄存器AL的第4,3位取反,其余位保持不变。XORAL,00011000B⑵ 将寄存器AL的第4,3位清零,其余位保持不变。ANDAL,11100111B⑶ 将寄存器AL的第4,3位置1,其余位保持不变。ORAL,00011000B⑷ 将寄存器AL的第4,3位写入MEN单元中的第4,3位,其余位保持不变。ANDAL,00011000BANDMEN,11100111BORMEN,AL⑸ 将寄存器AL的第i位写入MEN单元的第i位,其余位保持不变,i值在CL中。MOVBL,1SHLBL,CLANDAL,BLNOTBLANDMEN,BLORMEN,AL⑹ 将寄存器AL的第i+1,i位写入MEN单元的第i+1,i位,其余位保持不变,i值在CL中。MOVBL,3SHLBL,CLANDAL,BLNOTBLANDMEN,BLORMEN,AL⑺ 如果寄存器AL的第6,5位为00,则将AH清0,否则置全1。TEST AL,01100000BJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑻ 如果寄存器AL的第6,5位为01,则将AH清0,否则置全1。AND AL,01100000BCMP AL,00100000BJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑼ 如果寄存器AL的第6,5位为10,则将AH清0,否则置全1。AND AL,01100000BCMP AL,01000000BJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑽ 如果寄存器AL的第6,5位为11,则将AH清0,否则置全1。AND AL,01100000BCMP AL,01100000BJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑾ 如果寄存器AL的数据为偶数,则将AH清0,否则置全1。TEST AL,1JZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑿ 如果寄存器AL的数据为正数,则将AH清0,否则置全1。TEST AL,80HJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP2.不允许使用乘法指令来完成AX与12的乘法运算。SHL AX,1 ;将AX乘2(等于2倍)MOV BX,AX ;预存一份AX在BX内SHL AX,1 ;将AX再乘2(等于4倍)ADD AX,BX ;加上原有2倍(等于6倍)SHL AX,1 ;再乘2(等于12倍)3.写一指令序列,将DX与AX中的双字左移三位。MOVCX,3LOP: SHLAX,1RCLDX,1LOOPLOP4.内存单元MEMB存放着一个8位的数据,将它的高4位与低4位互换。MOVCL,4ROLMEN,CL5.将AL的第7位和第0位,第6位和第1位,第5位和2第位,第4位和第3位互换。MOVCX,7MOV BL,0LOP: MOV AH,ALAND AH,1ADD BL,AHSHRAL,1SAL BL,1LOOPLOPADD AL,BL五、简答题1.至少使用三种方法(提示:MUL、SHL和SHR指令)实现将DATA中的字节数据乘以64的指令序列。①MOV AL,64MUL DATA②MOV CL,6SHL DATA,CL③MOV AH,DATAMOV AL,0SHRAX,2MOV DATA,AL第九章课外练习题一、单项选择题: 1.已知CALL BX执行前SP=100H,执行后SP的内容为( D )。 (A)100H (B)102H (C)98H (D)0FEH 2.已知SP=100H,指令RET(远返回)执行后SP的值为(B )。(A)106H (B)104H (C)0FCH (D)0FAH3.已知SUBR是一个属性NEAR的子程序,下述调用SUBR子程序的指令序列中,哪一个不能实现调用SUBR的目的( C )。(A)CALLSUBR (B)CALLNEARPTRSUBR(C)MOVBX,OFFSETSUBR (D)MOVBX,OFFSETSUBR CALLNEARPTR[BX] CALLBX4.下面是将某存储区清0的宏定义,如将BUFF开始的100个存储单元清0,则其宏调用格式为(C)。CLEAR MACRO DIR,DST,CNT DIR LEA DI,DST MOV CX,CNT XOR AL,AL REP STOSBENDM(A)CLEARBUFF,100 (B)CLEARSTD,BUFF,100(C)CLEARCLD,BUFF,100 (D)CLEARBUFF,STD,1005.宏指令库以(C)格式存放在磁盘上。(A)可执行代码 (B)目标代码 (C)源代码6.汇编程序使用(C)伪指令使重复块重复多次。(A)LOOP (B)REPE (C)REPT (D)LOCAL二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)1.CALL WORD PTR[SI] ( × )2.CALL [BX][SI] ( × )3.CALL AX ( × )4.CALL [BX] ( √ )5.CALL NEAR PTR[SI] ( × )6.CALL FAR PTR[SI+2] ( × )7.宏的处理是在程序执行过程中处理的( × )8.宏定义中的形式参数可以多于宏调用的实在参数 ( √ )三、填空题1.调用程序与子程序之间的参数传递方法有三种,即堆栈法(寄存器法)(存储单元)。2.LOCAL用于说明局部标号的伪指令,它只允许在(宏程序中)使用,其位置必须在(第一条指令前)。四、简答题1.指出CALL指令与JMP指令的异同?答:相同----都可以无条件跳转到目标地址。不同---CALL指令有返回,而JMP没有;CALL指令影响堆栈段的变化,而JMP不影响堆栈段。2.指出子程序和宏指令的区别?宏子程序处理者汇编程序中央处理器处理时间在汇编过程中程序执行时处理方法用宏体替换宏指令用CALL指令调用占用内存占用内存空间多占用内存空间少运行速度运行速度较高运行速度较低灵活性十分灵活不够灵活3.段内调用和段间调用的异同点是什么?答:段内调用是指在调用和返回过程中,转返地址不涉及CS的变化,只通过IP内容的变化实现控制的转返;而段间调用需要CS,由CS和IP的变化共同决定控制的转返。4.主程序和子程序之间有哪几类参数传递方法?答:主程序与子程序之间的参数传递方法有三种,即堆栈法、寄存器法和存储单元。5.子程序说明文件由哪几个部分组成?并分别说明各组成部分的含义?答:编写子程序的目的在于减少源程序中某些相同功能程序段的重复书写,以利于自己和他人编写程序时使用。一般包含下述几项内容:(1)子程序名称:用子程序定义伪指令定义该子程序时的名字;(2)子程序功能:用自然语言或数学语言等形式简单清楚地描述子程序完成的任务;(3)入口参数:说明子程序要求有几个入口参数,这些参数表示的意义及存放位置;(4)出口参数:说明子程序要求有几个输出参数(运行结果),这些参数表示的意义及存放位置;(5)受影响的寄存器:说明子程序运行后,哪些寄存器的内容被破坏了,以便使用者在调用该子程序之前注意保护现场。五、程序分析题1.下述程序段运行后,AL=( 88H ),CL=(80H )MOVAL,38HMOVBL,49HCALLSUBOINCALDECCL…SUBOPROC

ADDAL,BL

MOVCL,AL

DAA

RET

SUBOENDP

2.宏指令GOTOL,X,REL,Y(其中REL可以是Z,NZ,L,NL等)定义如下:GOTO MACRO L,X,REL,YIFB<REL>JMPLELSEMOVAX,XCMPAX,YJ&RELLENDIFENDM回答下列问题:①展开宏调用GOTOLOP,SUM,NZ,15①宏展开: 1MOVAX,sum1CMPAX,151Jnzlop②该宏指令的功能。②可以根据不同情况产生无条件转移指令或比较和条件转移指令。六、填空完善程序1.下面是计算S=X2+Y2的程序,其中平方值的计算是用直接查表法编写的SQ1子程序。设在DAX,DAY单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,将结果存入SQR单元。.MODEL SMALL.STACK.DATADAXDB -7DAY DB 4SQRTAB DB 0,1,4,9,16,25,36,49,64,81SQR DB ?.CODE.STARTUPMOV AL,DAXCALL SQ1MOV CL,AL( MOV AL,DAY )CALL SQ1ADD CL,AL( MOV SQR,AL ).EXIT 0SQ1 PROC NEAR( TEST AL,80H )JZ K1NEG ALK1: LEA BX,SQRTAB( XLAT )RETSQ1 ENDPEND2.请根据下面子程序的说明文件填充其中的空白。子程序的说明文件如下:子程序名称:AVER子程序功能:求一组带符号数据的平均值入口参数:数据的首地址在DS:SI中存放,数据个数存放在CL中出口参数:AL=数据的平均值AVERPROCPUSHSIPUSHCXXORBX,BX( MOV CH,0 )NEXT: LODSB( CBW )ADDBX,AXLOOPNEXTPOPCX( MOV AX,BX )IDIVCL( POP SI )RETAVERENDPALTOASC MACROLOCAL ALLN1AND AL,0AHJL ALLN1ADD AL,ALTOASC MACROLOCAL ALLN1AND AL,0AHJL ALLN1ADD AL,7ALLN1: ADD AL,30HENDMALTOASC MACROAND AL,0FHJL ALLN1ADD AL,7ALLN1: ADD AL,30ALTOASC END八、编程题1.编写一个子程序,完成自然数1~100的求和运算。SUM PROC NEARPUSH AXPUSH CXMOV AX,0MOV CX,100AGAIN:ADD AX,CXLOOP AGAINPOP CXPOP AXSUM ENDP2.编写多字节加法子程序,写出子

温馨提示

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

评论

0/150

提交评论