210 likes | 387 Views
习题课. —— 数据处理部分. 1 程序逻辑控制. 1. 下列指令中不等价的是() A.JA 和 JNBE B.JG 和 JNLE C.JL 和 JNG D.JBE 和 JNA 2. 下列指令中等价的是() A.JC 和 JO B.JNC 和 JNO C.JP 和 JPE D.JA 和 JG. 3. 条件转移指令的转移范围() A.-128-- +127 B.-32768 -- +32767 C.0 -- +255 D.0 -- +65535 4. 循环指令 LOOP AGAIN 终止循环的条件是() A. ( AX ) =0 B. ( BX ) =0
E N D
习题课 ——数据处理部分
1 程序逻辑控制 1.下列指令中不等价的是() A.JA和JNBEB.JG和JNLE C.JL和JNGD.JBE和JNA 2.下列指令中等价的是() A.JC和JOB.JNC和JNO C.JP和JPED.JA和JG
3.条件转移指令的转移范围() A.-128-- +127B.-32768 -- +32767 C.0 -- +255D.0 -- +65535 4.循环指令LOOP AGAIN终止循环的条件是() A.(AX)=0B.(BX)=0 C.(CX)=0D.(DX)=0 5.循环指令LOOPNZ终止循环的条件是()。 A.CX=0,且ZF=0B.CX=0,或ZF=1 C.CX≠0,且ZF=0D.CX≠0,或ZF=1
设AX,BX。CX中的数是带符号数,下列程序求AX.BX.CX中的最小值,结果在AX中.请将程序填写完整。设AX,BX。CX中的数是带符号数,下列程序求AX.BX.CX中的最小值,结果在AX中.请将程序填写完整。 CMP AX,BX (1)_________________ XCHG AX,BX NEXT:CMP CX,AX (2)_________________ XCHG AX,CX EXIT: 答:(1)JLE NEXT (2)JGE EXIT
下列程序测试DL寄存器D6和D2位。若同时为0,转ZERO,置AX为0,否则转NON_ZERO,置AX为1。下列程序测试DL寄存器D6和D2位。若同时为0,转ZERO,置AX为0,否则转NON_ZERO,置AX为1。 TEST DL,(1)_______ JZ ZERO NO ZERO:MOV AX,1 (2)___________________ ZERO:MOV AX,0 EXIT: 答:(1)01000100B (2)JMP NEXT
下列程序段求数组ARRAY的累加和。请将程序填写完整。共10项数据。下列程序段求数组ARRAY的累加和。请将程序填写完整。共10项数据。 ARY DW 45H,68H,…,0ABC1H,9600H; COUNT DW 10 (1)__________ MOV CX,COUNT XOR AX,AX AGAIN:ADD AX,[SI] ADD SI,2 (2)____________ 答:(1)LEA SI,AKY (2)LOOP AGAIN
1.执行下列程序: MOV AX,9B47H MOV BX,0B568H ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP SHORT L5 问:1)程序执行后,(AX)= ? 2)程序转向哪个标号? 答:1)9B47HL5
程序分析题 DATA SEGMENT S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS ┆ LEA SI,S9 LEA, DI,S9+1 MOV CX,5 LOP: MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL ADD SI,2 ADD DI,2 LOOP LOP 上述程序段运行后,S9开始的10个字节存储单元内容是什么? 答:S9 DB 1,0,3,2,5,4,7,6,9,8
设在数据段中有X,Y两个变量(字节单元),试编写程序段计算:设在数据段中有X,Y两个变量(字节单元),试编写程序段计算: x 当x>=0时 |x| 当x<0时 y= 解:MOV AX, X CMP AL, 0 JGE LAB NEG AL LAB:MOV Y, AL
在给定个数的数中寻找最大值,放至指定的存储单元。在给定个数的数中寻找最大值,放至指定的存储单元。 DATASEGMENT BUFFERDB2, 4, 3, 6, 1, 5 COUNTDW6 MAXDB? DATAENDS
CODESEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX, DATA MOV DS, AX MOV CX, COUNT LEA BX, BUFFER MOV AX, [BX] INC BX DEC CX AGAIN:CMP AX, [BX] JGE NEXT MOV AX, [BX] NEXT:INC BX LOOP AGAIN MOV AX, 4C00H INT 21H CODEENDS ENDSTART
思考1 • 已知ARRAY DW 1200, 0069H, 798AH, … , 432BH;共10项数据。 编程统计正数项个数存入PLUS单元中。 DATA SEGMENT ARRAY DW 1200, 0069H, 798AH, 432BH, …… PLUS DB ? DATA SEGMENT
思考2 • 在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。 DATA SEGMENT BUF1 DW -56,24,54,-1,89,-8,… BUF2 DW 45,-23,124,345,-265,… SUM DW 10 DUP(0) DATA ENDS
2 过程 • 下面的程序段有错吗?若有,请指出错误。CRAY PROC PUSH AX ADD AX,BX RET ENDPCRAY
判断题(正确的画√ ,错误的画× ) 1.寄存器传递参数法适合于参数较多的情况。() 2.用赋值法编写子程序时,子程序内必须修改返回地址。() 3.RET N指令中,N可为任意值。() × √ ×
简答题 在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: (2)执行段间返回RET指令时,执行的操作是: 答:(1)执行段内返回: 栈顶内容→IP,SP+2→SP (2)执行段间返回: 栈顶内容→IP,SP+2→SP 栈顶内容→CS,SP+2→SP
编写完整程序,把从键盘读入的一个小写字母转换成相应的大写母,并输出显示。编写完整程序,把从键盘读入的一个小写字母转换成相应的大写母,并输出显示。
code segment assume cs:code main: mov ah,1 int 21h ;输入字符到al mov bl,al ;暂存到bl中 sub bl,32 ;小写字母转成大写字母 mov ah,2 ;回车换行 mov dl,13 int 21h mov dl,10 int 21h mov dl,bl ;输出大写字母 int 21h mov ah,4ch ;控制权交还DOS int 21h code ends end main
设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。 要求: 子程序开始时必须利用堆栈保护用到的各寄存器,并在返回前恢复;主程序结构要书写完整(包括子程序的调用方式)。 其中数据段如下: DATA SEGMENT DAT DB -6 SQRTAB DB 0,1,4,9,16,25,36,49,64,81 SQR DB ? DATA ENDS
DATASEGMENT DATDB -6 SQRTABDB 0,1,4,9,16,25,36,47,64,81 SQRDB ? DATAENDS STACKSEGMENT PARA STACK DW 20H DUP(?) STACKENDS CODESEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX CALL SUBROT MOV AH,4CH INT 21H
SUBROTPROC PUSH AX PUSH BX LEA BX,SQRTAB MOV AL,DAT TEST AL,80H JNS NEXT NEG AL NEXT: XLAT SQRTAB MOV SQR,AL POP BX POP AX RET SUBROTENDP CODEENDS ENDSRART