执行 XOR AX,AX DEC AX 后,AX 寄存器和CF汇编标志寄存器位的值为

大工16春《汇编语言程序设计》在线测试123(标准答案)
需要答案请联系&&&&&&&
奥鹏全部院校在线作业&离线作业&毕业论文
旺旺客服:&
大工16春《汇编语言程序设计》在线测试1
试卷总分:100 & 测试时间:--
一、单选题(共10道试题,共40分。)
1.如果(AL)=03H,(BL)=05H,执行如下程序片段后,(1)SUB
AL,BL(2)AAS,得到(AL)等于()。
2.下面各传送指令中,错误的是()。
A. MOV AL,AX
B. MOV AX,DATA_SEG
C. MOV AL,'C'
D. MOVSX AX,BL
3.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是()。
A. 表示结果中含2的个数为偶数
B. 表示结果中含1的个数为奇数
C. 表示该数为偶数
D. 表示结果中低八位含1的个数为偶数
4.若当前(DL)=48H,执行指令AND DL,0F0H后,(DL)等于()。
5.下面各传送指令中,错误的是()。
A. MOV [DI],[SI]
B. MOV AX,BX
C. MOV DS,AX
D. MOV AL,'A'
6.如果(AL)=03H,(BL)=05H,执行如下程序片段后,(1)SUB
AL,BL(2)AAS,得到CF等于()。
7.如果要读取80H号端口的内容,下面()指令能够实现该功能。
A. ADDT BL, 80H
B. MOVt AL,[80H]
C. ADDT 80H
D. IN AL,128
8.设(SP)=100H,(AX)=0FFFFH 按顺序执行下列语句后(1)STC(2)PUSH AX(3)ADC
AX,0(4)PUSH AX(5)POP BX,(BX)等于()。
9.下列对CL寄存器的内容乘以4的正确操作是()。
A. ROLS CL,4
C. SHL CL,1
D. MOV CL,2
10.设(SP)=100H,(AX)=0FFFFH 按顺序执行下列语句后(1)STC(2)PUSH AX(3)ADC
AX,0(4)PUSH AX(5)POP BX,(SP)等于()。
二、判断题(共20道试题,共60分。)
1.中断是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。在此,称引起紧急事务的事件为中断源。
2.存储器的存储单元是1MB。
3.以过程形式表示的代码段,一定有RET指令存在。
4.I/O设备包括显示终端,键盘,打印机等。
5.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0。
6.每一个子程序中只能有一条RET指令。
7.指令XOR AX,AX执行后,AX内容不变,但设置了标志位。
8.NOT AX,执行后,将AX清0。
9.计算机系统总线可分为地址总线、数据总线和控制总线。
10.8086的地址总线宽度是20位,因此它的寻址范围就是220MB。
11.一般程序及大量数据存放在外存中。
12.指令是能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。
13.伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。
14.CPU由算术逻辑单元(ALU)和控制逻辑单元以及工作寄存器组三部分构成。
15.指令AND AX,OFH执行后,分离出AL低四位。
16.每一个子程序结束之前一定要有一条RET指令。
17.八进制数据1000转换成十进制数据为7。
18.十六进制数据1000转换成十进制数据为8。
19.因为CPU运算器是非常快的,需要存储器不停的提供指令给CPU,这就要对存储器进行分层设计。计算机的存储器分为高速缓冲处理器、主存和外存。
20.二进制数据10转换成十进制数据为8。
大工16春《汇编语言程序设计》在线测试2
试卷总分:100 & 测试时间:--
一、单选题(共10道试题,共40分。)
1.设某数据段:(1)DATA SEGMENT (2)ORG
20H (3)NUM1=8 (4)NUM2=NUM1+10H (5)DA1 DB ‘COMPUTER’ (6)DB
0AH,0DH (7)COUNT EQU $-DA1 (8)DA2 DW ‘CO’,’MP’,’UT ,’ER’ (9)DATA
ENDS  请回答:DA1的偏移地址是()。
2.BUF DW 4,6,$+2,若汇编时BUF分配的偏移地址是0042H,则汇编后BUF数组中第三个值是()。
3.设某数据段:(1)DATA SEGMENT (2)ORG
20H (3)NUM1=8 (4)NUM2=NUM1+10H (5)DA1 DB ‘COMPUTER’ (6)DB
0AH,0DH (7)COUNT EQU $-DA1 (8)DA2 DW ‘CO’,’MP’,’UT ,’ER’ (9)DATA
ENDS  请回答:COUNT的值是()。
4.假设数据段定义如下:(1)DA1 DW ’C’,’D’(2)DA2 DB 18 DUP(?)(3)DA3 DW
$-DA2(4)……(5)MOV BX,DA3(6)MOV AX,DA1上述指令执行后,BX寄存器中的内容为()。
5.假设数据段定义如下:(1)DA1 DW ’C’,’D’(2)DA2 DB 18 DUP(?)(3)DA3 DW
$-DA2(4)……(5)MOV BX,DA3(6)MOV AX,DA1上述指令执行后,BX寄存器中的内容为()H。
6.数据段定义:(1)BUFl DB 3 DUP(0,2 DUP(1,2),3)(2) COUNT EQU $-BUFl,则
变量COUNT的值是()。
7.在某数据段内定义变量 BUFFER DB 30 DUP (20) 表达式 TYPE BUFFER的值为()。
8.假设数据段定义如下:(1)DA1 DW ’C’,’D’(2)DA2 DB 18 DUP(?)(3)DA3 DW
$-DA2(4)……(5)MOV BX,DA3(6)MOV AX,DA1上述指令执行后,AH寄存器中的内容是()。
9.现有如下数据段(1)DATA SEGMENT(2)ARRAY1 DB 1,26,‘3456’(3)ARRAY2 DW
7,89H,10(4)VAL EQU ARRAY2-ARRAY1(5)DATA
ENDS请问:该数据段已占有()字节的存储空间。
10.假设数据段定义如下:(1)DA1 DW ’C’,’D’(2)DA2 DB 18 DUP(?)(3)DA3 DW
$-DA2(4)……(5)MOV BX,DA3(6)MOV AX,DA1上述指令执行后,AL寄存器中的内容是()。
二、判断题(共20道试题,共60分。)
1.程序开始用name或title作为模块的名字,格式为:Name module_name或Title
2.一般来说名字项可以是标号或变量,他们都是用来表示本语句的符号地址,都是可有可无的,只有当需要用符号地址来访问该语句时它才需要出现。
3.名字项中不能出现字母A-Z。
4.汇编程序主要包括微软的MASM系列和Boland公司推出的TASM系列,他的作用就是为用户开放伪操作和操作符,供用户开发汇编程序时使用。
5.ALIGN伪操作,这条指令保证双字数组边界从4的倍数开始。
6.在DOS系统中输入汇编.doc文件名就可以执行该汇编程序。
7.BETA EQU 56语句的功能是使BETA的值为56。
8.指令中可以引用$,如: JNE $+6。
9.标号在代码段中定义,后面跟着冒号,可以用EQU或LABLE伪指令定义。
10.汇编语言程序格式包括名字项,操作项,操作数项等。
11.段定义伪操作中,定位类型(aligntype)说明段的起始地址应该有怎样的边界值,可以为0。
12.伪指令中不能引用地址计数器$。
13.用专用字符表示名字项时,可以放置在任意位置上。
14.DD代表6个字节。
15.DB代表字。
16.段定义伪操作中,组合类型(combinetype)说明程序链接时的段组合并方法。
17.变量在数据段或附加数据段定义,后面不跟冒号。
18.段定义伪操作中,使用类型(usetype)说明使用16位寻址方式还是32位寻址方式。
19.表示源程序结束的伪操作格式为:End [label]
这条指令说明结束汇编程序,并从标号地址开始执行源程序。
20.简化段定义伪操作中,数据段是可以细划分的。
大工16春《汇编语言程序设计》在线测试3
试卷总分:100 & 测试时间:--
一、单选题(共10道试题,共40分。)
1.阅读如下程序段:(1)ADRR DB XXH,XXH,……,XXH (2) NUM EQU $-ADRR (3)RETT
DB ? (4)… (5)MOV CX,NUM (6)MOV BX,-1 (7)DON: (8)INC BX (9)CMP
ADRR[BX],0 (10)LOOPZ DON (11)JNZ NEXT (12)MOV BL,OFFH (13)NEXT:
(14)MOV RETT,BL (15)HLT结束后,该程序完成的功能是()。
A. 希尔排序算法
B. 在以Adrr为起始地址的数组中查找第一个非0数据
C. 在以Adrr为起始地址的数组中查找字符A
D. 以上都不对
2.MOV [BX],DL指令是将DX寄存器()地址送入BX中。
3.(1)FUNCTION MACRO P1,P2,P3(2)MOV AX,P1 (3)P2 P3,1 (4)ENDM
通过调用语句FUNCTION 101H,DEC,AX调用之后,AX寄存器中的内容为()。
4.阅读下面的程序片段。(1)MOV AX,723AH(2)MOV BX,0C86BH (3)SUB AL,BL
(4)SBB AH,BH (5)XOR AL,01H (6)ADC AX,0执行该程序片段后:CF等于()。
5.阅读如下程序段,假设数组中所有数据均为0:(1)ADRR DB XXH,XXH,……,XXH (2) NUM EQU
$-ADRR (3)RETT DB ? (4)… (5)MOV CX,NUM (6)MOV BX,-1 (7)DON: (8)INC
BX (9)CMP ADRR[BX],0 (10)LOOPZ DON (11)JNZ NEXT (12)MOV BL,OFFH
(13)NEXT: (14)MOV RETT,BL (15)HLT结束后,RETT字节单元中的内容是()。
6.下面指令执行后,(1)DAW DW 2A05H(2)DAB DB 0FAH (3)MOV AL,BYTE PRT DAW
(4)SUB DAB,AL变量DAB中的内容是()。
7.假设(EAX)=H,(EBX)=H,(DS)=0010H,试问MOV
ECX,[EAX+EBX]指令访问内存的物理地址是()。
8.MACRO和ENDM是一对伪指令,在()定义中,它们成对出现。
9.阅读下面的程序片段。(1)MOV AX,723AH(2)MOV BX,0C86BH (3)SUB AL,BL
(4)SBB AH,BH (5)XOR AL,01H (6)ADC AX,0执行该程序片段后:(AX)等于()。
10.阅读下面的程序片段。(1)MOV AX,723AH(2)MOV BX,0C86BH (3)SUB AL,BL
(4)SBB AH,BH (5)XOR AL,01H (6)ADC AX,0执行该程序片段后:OF等于()。
二、判断题(共20道试题,共60分。)
1.DMA方式中,DMA控制器永远都不会获得总线控制权。
2.在宏定义FOO MACRO P1,P2,P3 …… ENDM后,该FOO WORD_VAR,INC,AX
宏调用是合法的。
3.传递的参数较少的情况下,使用宏调用而不是使用子程序调用较为合理。
4.宏定义内不允许使用宏调用。
5.计算机的外设和存储设备都是通过接口连接到系统总线上的,每个接口都有一组寄存器组成。
6.宏定义可以出现在宏调用之后。
7.LOCAL伪操作(局部标号伪操作),其标准格式如下:LOCAL LIST OF LOCAL LABELS。
8.DMA方式,也称为成组数据传送方式。
9.直接存储器存取方式,也叫MFMA方式。
10.计算机的CPU和内存通过端口和外部设备进行通信。
11.宏定义中可以无变元(参数)。
12.CPU和外设之间要交换控制,状态和数据三种信息,但真正要交换的是数据信息,这些信息可以是串行的也可以是并行的,相应的外设接口要用串行接口和并行接口。
13.重复调用的代码较短的情况下,使用宏调用而不是使用子程序调用较为合理。
14.DMA控制器主要包括四个寄存器:控制寄存器,状态寄存器,地址寄存器,字节计数器。
15.宏定义内不允许使用宏定义。
16.变元可以是操作码的一部分,但在宏定义体中必须用&作分隔符。
17.某些情况下,汇编语言需要连续地重复完成相同或几乎完全相同的一组代码,这时候就需要重复汇编,这有些类似于C语言中的条件编译。
18.宏汇编中,实元可以是常数,寄存器,存储单元名,以及用寻址方式能找到的地址或表达式等。
19.MACRO和ENDM一对伪操作中间就是宏定义体,是一组有独立功能的程序代码。
20.子程序调用过程中,它只占用自身空间大小,而宏汇编在调用后,都要作一次宏展开,因此实际占用空间会随着宏调用次数增加而增加。所以使用宏汇编没有任何意义。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。汇编语言程序设计课后习题及答案
第一章1.1CPU 分析、控制并执行指令的部件IP 指示下一条将要执行的指令的地址SP 保存当前栈顶地址的寄存器状态标志 指出指令操作结果的标志,如ZF,CF等。控制标志 控制操作的标志,只有DF,IF,TF三个。ALU 进行算术和逻辑运算的单元存储器 存储程序、数据等信息的的记忆装置。物理地址 CPU发出的访问存储器的地址信息。偏移地址 相对于段起始地址的偏移量。段地址 是逻辑段的起始地址。1.2下列操作可使用哪些寄存器?存放各种运算操作的数据:AX,BX,CX,DX,SP,BP,SI,DI(我的辅导书上没有SP,BP;why?)?存放数据串操作时的计数值:CX?查看程序已执行到哪条指令的地址:IP?查看堆栈中当前正要进行入出栈的存储单元的地址:SP?查年运算结果是否等于零:PSW的ZF?查年程序中的数据存放段区是从哪个地址开始的:DS,ES?查看程序中的指令存放的段区是从哪个地址开始的:CS1.3段地址和偏移地址为A的存储单元的物理地址是什么?而1109:00EA或A的存储单元的物理地址又是什么:这说明了什么问题?A物理地址为::00EA的物理地址为::0F2A的物理地址为:1117A.说明物理地址不变,段地址改变,偏移地址也随之变化.1.存储器地址对应的数据(图略)75422H(字节):9CH75424H(字节):5DH75422H(字):249CH75424H(字):E65DH
第二章2.1写出相应的汇编语言指令:(1)以寄存器BX和SI作为基址变址寻址方式把存储器中的一个字传送到CX寄存器。MOV CX,[BX][SI(注:寄存器寻址只能使用:BX,BP,SI,DI;且BX、BP或SI,DI不能同时使用,可能我说的不太对,请版主确认一下)(2)以寄存器BX和偏移量value作寄存器相对寻址方式把存储器的一个字和AX相加,把结果(即和)送回那个字单元中。ADD value[BX],AX(3)将一个字节立即数0B6H与符号的地址为NUM的存储器字节单元内容相比较。CMP BYTE PTR 0B6H,NUM(如果前面不加BYTE RTR,默认的也是字节比较吧?还有双字比较,应该怎么写?)(4)测试从寄存器BP和DI、偏移量COUNT作为相对基址变址寻址方式寻址的存储器字节单元内容最高位B7的值,字节单元的内容不能改变。TEST COUNT[BP][DI],80H(5)将AH寄存中的高4位和低4位数据互换。MOV CL,4ROL(或ROR) AH,CL(6)清除以寄存器SI间接寻址的存储器字单元,同时清除CF标志位.XOR AX,AX ;使AX=,CF=0MOV [SI],AX2.2设DS=1000H,BX=2865H,SI=0120H,偏移量D=47A8H,试计算下列各种寻址方式下的有效地址.1)使用D的直接寻址 47A8H (这道指令怎么写?如何定义D的值)2)使用BX的寄存器间接寻址 2865H3)使用BX和D的寄存器相对寻址 700DH4)使用BX、SI和F的相对基址变址寻址 712DH5)使用BX、SI的基址变址寻址 29852.3假设DS=1000H,BX=2A80H,CX=3142H,SI=0050H,(10050H)=3BH,(10051H)=86H,(11200H)=7AH,(11101H)=64H,(12ADOH)=0A3H,每小题的括号中分别填入指令执行后的结果:1)MOV AX,1200H ;AX=1200H2)MOV AX,[1200H] ;AX=1200H(书上的答案是647A,但是我用DEBUG试了一下是1200,可能是因为我的PII的原因吧,希望有8088的朋友能试一下,版主,考起试来应该怎么写呀?)3)ADD [SI],CX ;(10050H)=7DH,H,ZF=0,CF=0,SF=1,OF=14)OR BYTE PTR [BX][SI],54 ;(12AD0H)=F7,CF=0,OF=05)MOV 150H[BX],CH ;[12BD0H]=31,CH=312.4指出下列指令的错误原因1)MOV AX,CL 两操作数的长度不一样.2)MOV CS,AX 不能给CS赋值3)INC BETA[BP] 书上说:没有数据类型说明,但我认为它应该自动默认为字节操作,版主再来看看吧4)MOV ES,1850H 立即数不能直接送段寄存器5)ADD BX,DS 段寄存器不能做为加法操作数使用6)AND AX,[CX] 寄存器寻址只能使用BX,SI,DI,BP2.5说明下列指令执行的操作,说明原始数据和结果数据的存储地点[原始数据](结果数据)1)mov [2700h],cx 这条指令在我的P4试了一下,是错误的;如果考试时出只好说是:把[CX]中的内容送到(数据段中偏移地址为2700h字单元)中;2)MOV DH,50[SI] 将[数据段中有效地址为SI+50的字节单元]中的数据送入(DH)中;3)LEA SI,ARRAY 将ARRAY的偏移地址送入(SI),结果数据在[代码段对相应指令字节中]4)DAS 将AL中的压缩的十六进制数调整为十进制数,结果数据在AL中,原始数据也在AL中5)ADC CL,[BX] 将BX和CL的和加上CF的值后,存放在CL中,结果在CL中,原始在BX,CL,CF中6)ROR WORD PTR ALPHA[SI],CL 将偏移地址为ALPHA+SI字单元中的数据循环移,结果和原始都在哪个字单元中.2.6指出下列无条件转移指令的转移地址中的偏移地址是什么,存放在何处.1)JMP BX 偏移地址是BX中的值,存放在BX中2)JMP WORD PTR [BX] 偏移地址是以BX中的值为偏移地址的一个字单元中的数值,存放在以BX中的值为偏移地址的一个字单元中3)JMP NEAR PTR PROA 偏移地址为PROA的偏移地址,存放在CS段的相应指令处(书上说的不一样,请版主做下这道题)4)JMP FAR PTR FAR_PRO 偏移地址为FAR_PRO的偏移地址,,存放在CS段的相应指令处5)JMP SHORT AGAIN 偏移地址为AGAIN的偏移地址,存放在CS段的相应指令处(书上说的不一样,请版主做下这道题)6)JMP DWORD PTR [BX][DI] 偏移地址是以BX,DI为基址变址寻址的两个字单元的内容,存放在以BX,DI为基址变址寻址的两个字单元中2.7写出把道址为BLOCK的字数组的第六个字送到CX寄器的指令序列,要发别使用以下几种寻址方式1)以BX寄存器的间接寻址LEA BX,BLOCK+0AHMOV CX,[BX]2) 以BX寄存器的相对寻址LEA BX,BLOCKMOV CX,0AH[BX]3) 以BX,SI的基址变址寻址LEA BX,BLOCKMOV CX,[BX][SI]2.8指出下列指令的源和目的操作数的寻址方式(目地操作数寻址方式;原操作数寻址方式)1)MOV ARRAY,BX直接寻址;寄存器寻址2)ADC CX,ALPHA[BX][SI]寄存器寻址;相对基址变址寻址,寄存器寻址3)AND BYTE PTR GAMMA [DI],B寄存器相对寻址;立即寻址,寄存器相对寻址4)INC WORD PTR [BX]寄存器间接寻址;寄存器间接寻址5)TEST EX:[IS],DX(目的操作数?在哪?只改变标志位,算寄存器寻址吗?书上写的寄存器间接寻址,不明白);寄存器间接寻址,寄存器寻址6)**B SI,[SI]寄存器寻址;寄存器寻址,寄存器间接寻址2.9分别说明下列每组指令中的两条指令的区别:1) MOV AX,TABLELEA AX,TABLE前者是将变量TABLE的内容传递给AX;后者是将TABLE和偏移地址传递给AX2) AND BL,0FHOR BL,0FH前者是BL的内容与0F相与;后者是BL与0FH相或3) JMP SHORT L1JMP NEAR PTR L1前者为短跳转,后者为近跳转4) MOV AX,[BX]第三章3.11)使计算机执行某种操作的命令 ;指令2)表示计算机执行什么操作的符号 ;助记符3)存放指令机器码的存储器段区 ;代码段4)指出指令在程序中位置的符号地址 ;标号5)将汇编语言程序翻译成机器码程序的实用程序 ;汇编程序3.2试写出完成下列操作的指示性语句:1)将56H,78,0B3H,100存放在定义为字节变量ARRAY的存储单元中.ARRAY DB 56H,78,0B3H,1002)将字数据65,0A6H存放在定义为字节变量DATA的存储单元中.ARRAY DB 65H,29H,45H,95H,0BH,0A6H ;书上在0B和0A6H后面有个0,不什么是什么.3)将字节数据56H,0C6H,78H,12H存放在字变量ALPHA的存储单元中.并且不改变数据按字节存储的次序ALPHA DW 0C656H,1278H4)在BETA为道址的存储单元中连续存放字节数据:2个23,5个'A',10个(1,2),20个空单元。BETA DB 2 DUP (23),5 DUP ('A'),10 DUP (1,2), 20 DUP (?)5)在STRING为首址的存储单元中存放字符串'THIS IS A EXAMPE'STRING DB 'THIS IS A EXAMPE'3.3下列伪指令序列中,BASUB的值为多少?它表示什么意义?BUFF DB 7,6,'56',?ARRAY DW 0,67H,7BASUB EQU ARRAY-BUFFBASUB的值是5,它表示ARRAY与BUFF的首地址的差.3.4假设程序中的数据定义如下:BUF1 DB 100 DUP ('a')BUF2 DW C5HBUF3 DB 20 DUP (?)BUF4 DB 7,4,6,9,81)用一条指令将BUF1的谝移地址送入BX.LEA BX,BUF12)将BUF2的第三字节数据送入CLMOV BYTE PTR CL,[BUF2+2]3)将0A6H送入BUF3的第10个字节单元中MOV BYTE PTR [BUF3+9],0A6H4)用伪指令写出BUF1和BUF2二者的总长度(字节数)L1_2 EQU BUF3-BUF15)用一组指令写出BUF2的第二个数据567和BUF4的第三个数据6相加,结果(和)送入BUF3MOV AL,BUF4+2MOV AH,0ADD AX,BUF2+2MOV BUF3,AX3.5指出下列第一对伪指令语句的区别:1)X1 DB 76; X2 EQU 76前者是向X1的字节单元存入76,后者是将X2的值定义为76.2)X1 DW 3548H; X2 EQU BYTE PTR X1前者是定义X1的字单元值为3548,后者是定义X2的值为X1的第一个字节单元的值48.3)X1 EQU 3; X2 = 3两者都是赋值语句,但前者只能定义一次,后者可以重复定义.4)X1 DW 3678H; X2 DB 36H,78H前者的字节单元内容依次为78,36;后者的字节单元内容依次为36,78.5)X1 DW 6341H; X2 DW 6341前者为十六进制的6341;后者为十进制的63413.6设置一个数据段DATA_SEC,其中连续存放下列的8个变量,用段定义语句和数据定义语句写出数据段:1)DATA1为字符串变量:'DATA SEGMENT'2)DATA2为十进制数字节变量:72,65,-103)DATA3为十六进制数字字节变量:109,98,21,404)DATA4为10个零的字节变量.5)DATA5为数字的ASCII字符字节变量:123456)DATA6为十进制的字变量:7,9,298,19677)DATA7为十六进制的数的字变量:785,134758)DATA8为本段中字变量和字节变量之间的字节单元数之差DATA_SEC SEGMENTDATA1 DB 'DATA SEGMENT'DATA2 DB 72,65,-10DATA3 DB 6DH,62H,15H,28HDATA4 DB 10 DUP (0)DATA5 DB '12345'DATA6 DW 7,9,298,1967DATA7 DW HD1 EQU DATA6-DATA1D2 EQU $-DATA6DATA8 EQU D2-D13.7设程序中的数据定义如下:DATA1 DW ?DATA2 DB 32 DUP (?)DATA3 DD ?DLENGTH EQU $-DATA1问DLENGTH的值为多少?它表示什么意义?DLENGTH的值为38,表示DATA1,DATA2,DATA3所占用的字节数之和3.8指出下列第一小题中的伪指令表达的操作哪些是错误的?错误在哪时?1)ALPHA EQU 78HBETA EQU ALPHA+1没错.2)DATA DB 3951个字节最多能够表示2563)X1 SEG...X1 ENDSSEG应该写成SEGMENT4)ALPHA EQU BETABETA没有赋值5)COUNT EQU 100COUNT EQU 78不可以用EQU给一个变量重复赋值6)MAIN PROC...ENDP过程结束标志,应该有个MAIN7)ARRAY DW 10 DUP (?)...JMP ARRAYARRAY是变量,JMP不能跳到ARRAY处8)SEGMENT CODE_SEG...ENDS CODE_SEG书写格式错误,应写为CODE_SEG SEGMENTCODE_SEG ENDS3.9对于下面的数据定义,写出各条指令执行的结果:FLDB DW 0A24FHTABLE DB 32H,52,0C2H,213TEA EQU WORD PTR TABLEARRAY DB 'ABCD'COUNT EQU $-ARRAY1)MOV AX,FLDB AL=(4FH)2)MOV BX,TEA BH=(52H)3)MOV CH,TABL3+2 CH=(0CH)4)MOV DL,ARRAY DL=(41H)5)MOV DH,COUNT DH=(4)
第四章4.1写出完成下述功能的程序段:1)将32H存入CH中.MOV CH,32H2)将CH中的内容与2AH相加.ADD CH,2AH3)将CH中的内容乘2ADD CH,CH ;(练习册上的答案为:SHL CH,1)4)将CH中的内容存入以BX作为相对基址寻址的数组变量NUM的第10个字节单元中(数据段)MOV BX,9MOV NUM[BX],CH4.2写出完成下述功能的程序段:1)在数据段中,字变量DARA1有两个数据:1C35H和0214H,字变量DARA2有两个数据:0A678和81A4H,字变量DARA3为二个空单元.DATA SEGMENTDARA1 DW 1C35H,0214HDARA2 DW 0A678,81A4HDARA3 DW 2 DUP (?)DATA ENDS2)将DATA1的第一个字数据传送给AX.MOV AX,DATA13)将AX的内容与FARA2的第一个字数据相减SUB AX,FARA24)将AX中的结果存入DATA3的第一个空单元.MOV DATA3,AX5)将DATA1的第二个字数据传送给AX.MOV AX,DATA1+26)将AX的内容与SARA2的第二个数据及第一次相减速的借位相减**B AX,SARA2+27)将AX的结果存入DATA3的第二个单元中4.3在A1和A2的字单元中各有一个带符号数字数据,试求出A1和A2组成的双字长数的绝对值,存入B1和B2的字单元中,画出程序流程图和编写职程
序段,包括伪指令和指令序列.DATA SEGMENTA1 DW n1A2 DW n2B1 DW ?B2 DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMOV AX,DATAMOV DS,AXCMP WORD PTR A2,7FFFHJNL CODE1NEG WORD PTR A2NEG WORD PTR A1CODE1: MOV AX,A1MOV DX,A2MOV B1,AXMOV B2,DXMOV AH,00HINT 21HCODE ENDSEND4.4将存放在字节变量BCD1中的两个十进制数的ASCII码合并为一字节压缩的BCD码,存入BCD2中,试编写程序段DATA SEGMENTBCD1 DB 37H,38HBCD2 DB ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXMOV AL,BCD1+1AND AL,0FHMOV BL,BCD1MOV CL,4SHL BL,CLOR AL,BLMOV BCD2,ALCODE ENDSEND START
4.5分别编写出下列各算式的程序段,其中X、Y、Z、R和W均为存放16位无符号数的单元符号地址:DATA SEGMENTX DW 3031HY DW 3032HZ DW 3033HR DW 3034HW DW 3035HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AX;1)Z&---W+(z-x)MOV AX,ZSUB AX,XADD AX,WMOV Z,AX;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;2)Z&---(W*X)/(Y+6),R&---余数MOV AX,WMUL XMOV BX,YADD BX,6DIV BXMOV Z,AXMOV R,DX;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;3)Z&---W-(X+6)-(R-9)MOV AX,RSUB AX,9MOV BX,XADD BX,6MOV CX,WSUB CX,BXSUB CX,AXMOV Z,CX;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;4)Z&---((W-X)/5×Y)×2,余数丢弃MOV AX,WSUB AX,XDIV 5MOV AH,00HMUL YMUL 2MOV Z,AXMOV R,DX ;计算结果如果是双字节,将高16位存入Z字单元后面的一个字位中。DTATA ENDSEND START
5.1分支程序可分为哪些功能部分?用流程图的形式来表示各种分支程序的功能组成部分?双分支条件是怎么样才能产生?多分支条件是怎么样形成的?各种分支程序判断条件的方法有什么不同?实现分支的方法有什么不同?分支程序可分为:产生条件、测试、定向、标号。流程图见教材P119图5-4。用能够影响CF、ZF、OF的指令来产生条件,如CMP,SUM,AND,TEST,位移指令。(其余答案略,书上都有)5.2试分析下列程序段,说明完成了什么操作?程序执行前后,HEXNUM字节单元的内容是什么?ASCNUM DB 41HHEXNUM DB ?MOV AH,ASCNUMCMP AH,39HJBE NEXTSUB AH,7NEXT: SUB AH,30HMOV HEXNUM,AXHLT完成了当ASCNUM所表示的十六进制数的ASCII码转换成十六进制数,并存入ASCNUM字节单元的低四位,执行前是空单元,执行后是0A。5.3试编写完成题5.3图的流程图所规定的操作P1: MOV AX,-1JMP P4P2: MOV AX,0JMP P4P3: MOV AX,1JMP P4CMP AX,-1JLE P1JL P2JMP P3p4: MOV AL,00HINT 215.4测试ALPHA字节变量单元中的ASCII码字符,进行如下操作:1)若为数字字符,送入NUM字节单元中,置标记FLAG为02)若为大写字母字符,送入BIGCHR字节单元中,置标记FLAG为03)若为小写字母字符,送入SMLCHR字节单元中,置标记FLAG为04)否则,置标记FLAG为1DATA SEGMENTALPHA DB "A"NUM DB ?BIGCHR DB ?SMLCHR DB ?FLAG DB ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXMOV AX,ALPHACMP AX,30HJBE N4CMP AX,39HJA N1MOV NUM,AXJMP N5N1: CMP AX,41HJB N4CMP AX,5AJA N2MOV BIGCHR,AXJMP N5 N2: CMP AX,61HJB N4CMP AX,7aJA N4MOV SMLCHR,AXJMP N5N4: MOV FLAG,1JMP N3N5: MOV FLAG,0N3: MOV AX,00HINT 21CODE ENDSEND START5.5设在变量单元A、B和C中存放有三个数,若三个数都不为0,则求出三个救之和存入D;若有一个为0,则将其它两个单元也清零,请编写此程
序段。DATA SEGMENTA DB 10B DB 20C DB 30D DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXCMP A,0JZ P1CMP B,0JZ P1CMP C,OJZ P1MOV AL,0ADD AL,AADD AL,BADD AL,CMOV D,ALJMP P2P1: MOV A,0MOV B,0MOV C,0P2: MOV AH,0INT 21HCODE ENDSEND START5.6假设X和X+2单元与Y和Y+2单元中存放的是两个双字有符号数据(X、Y为低位字)。说明下列程序段所完成的是什么操作?若JBE L2指令
改为JB L2指令,在操作结果上有什么区别?AX=1和 AX=2分别说明了什么?MOV DX,X+2MOV AX,XADD AX,XADC DX,X+2CMP DX,Y+2JL L2JG L1CMP AX,YJBE L2L1: MOV AX,1JMP EXITL3: MOV AX,2EXIT: HLT将X的双字单元中的数乘2后与Y的双字单元中的数进行比较。如果X小于等于Y,将2写入AX中;如果X大于Y,将1写入AX。如果装JBE L2指令改为JB L2,侧是X等于Y时,将1写入AX。其余同上。5.7试编写一段程序,要求比较数组ARRAY中的三个16位有符号数。根据比较结果,置FLAG标志:1)如果三个数都不相等,则置FLAG为零。2)如果三个数有两个相等,则FLAG为1。3)如果三个数全相等,则FLAG为2。DATA SEGMENTARRAY DW H,3000HFLAG DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,ARRAYMOV BX,ARRAY+2MOV CX,ARRAY+4MOV DL,0CMP AX,BXJNZ N1INC DLN1: CMP BX,CXJNZ N2INC DLCMP DL,2JZ N5N2: CMP AX,CXJNZ N3INC DLJMP N5N3: CMP DL,1JNZ N4JMP N5N4: MOV DL,0JMP N6N5: MOV FLAG,DLN6: MOV AH,00HINT 21HCODE ENDSEND START6.1 循环参数置初值部分,循环工作部分和循环控制部分。(这种题我不太会做,大家上书上找吧。)6.2 1)将从2开始的连续10个偶数相加,将和存入SUM。SUM=1102)将DAT1的后五个单元的数5,6,7,8,9依次送入DAT2的5个单元中去。DAT2的内容是5,6,7,8,96.31)LEA AX,BUF1LEA BX,BUF2MOV CX,NLOP1: MOV AL,[AX]MOV [BX],ALINC AXINC BXLOOP LOP12)LEA SI,BUF1LEA DI,BUF2MOV CX,NCLDREP MOV**3)LEA SI,BUF1LEA DIBUF2MOV CX,NCLDLP: LOD**STO**LOOP LP6。4LEA BX,NUMBERLEA SI,PLUSMOV CX,256LP: MOV AL,[BX]INC BXAND AL,ALJNS L1LOOP LPJMP L2L1: MOV [SI],ALINC SILOOP LPL2: HLT6.5DATA SEGMENTGARDE DB a1,a2,a3,...a100A90 DB 0A80 DB 0A70 DB 0A60 DB 0A0 DB 0DATA EDNSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,AXMOV CX,100LOP1: CMP [BX],60JB P1CMP [BX],70JB P2CMP [BX],80JB P3CMP [BX],90JB P4JMP P5B1: BX+1LOOP LOP1P1: INC A0JMP B1P2: INC A60JMP B1P3: INC A70JMP B1P4: INC A80JMP B1P5: INC A90JMP B1CODE ENNSEND START6.61) MOV FLAG,FFHLEA AX,DATA1LEA BX,DATA2MOV CX,NP0: CMP [AX],[BX]JNZ P1INC AXINC BXLOOP P0JMP P2P1: MOV FLAG,0MOV DATA1,AXMOV DATA2,BXP2: HLT2) ASSUME CS:CODE,DS:DATA,ES:DATA ;设DATA为数据段地址MOV AX,DATA ;MOV DS,AXMOV ES,AXLEA SI,DATA1LEA DI,DATA2MOV CX,NCLDREPE CMP**JNZ P1MOV FLAG,0FFHJMP P2P1: MOV FLAG,0MOV DATA1,[SI] ;参考书有在前面有两句DEC SI,DEC DI不知道是什么意思MOV DATA2,[DI] p2: HLT6.7 LEA AX,BUFFER1ADD AX,NDEC AXLEA BX,BUFFER2MOV CX,NLOP1: MOV DX,[AX]MOV [BX],DXDEC AXINC BXLOOP LOP1
7.1主程序与子程序之间传递数据必须经过中间媒体,如CPU中的寄存器,肉存中的堆栈或工作单元来进行。分别对应一种传递方法。寄存器存储数据小,但速度快。堆栈后进先出,选进后出,有数量限制。多用于现场保护。存储单元有最大限度的自由度。7.2时间延迟程序,为了等待一段时间。7.3把以DEST首地址的连续100个字节单元中的数据移到以SOURCE为首地址的连续100个字节单元中。(CALL会将CS,IP入栈,版主,CS也会入栈吗?这是不是因为是段外转移的原因呀)后面的两道大题考试时出的可能性很小,由于时间原因,我暂时就不做了。
第 1 页 [只有一页]
按考试时间查看
公共课试题
| 版权所有}

我要回帖

更多关于 8086标志寄存器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信