|
计 算 机 原 理 与 应 用 练 习 题
PP EQU 2 PC DB PP DUP(0) DATA ENDS TYPE PA=( ) TYPE PB=( ) SIZE PA=( ) SIZE PB=( ) SIZE PC=( ) 258. 程序段 MOV AX,147BH MOV BX,80DCH ADD AX,BX JNO L1 JNC L2 执行后,转移到 259. 程序段 MOV AX,99D8H MOV BX,9847H SUB AX,BX JNC L3 JNO L4 执行后,转移到 260. 执行程序段后,回答问题: MOV AX,0 MOV BX,2 MOV CX,50 LP: ADD AX,BX ADD BX,2 LOOP LP ③用一条指令替换第十八行、第十九行两条指令,替换后功能不变 三、判断题: 262. 11111~01111(最高位为符号位)的二进制数能代表的十进制数的个数是31。( ) 263. 在8位补码表示中,10000000表示的真值为-0。( ) 264. CS、DS、ES和SS段都可以存放指令代码。( ) 265. 在8位补码表示法中,对-128求补会产生溢出。( ) 266. 字符串操作指令可以使用重复前缀来实现块操作。( ) 267. 8086CPU和8088CPU的字长均为16位。( ) 268. 8086CPU和8088CPU的片内数据线宽度均为16位。( ) 269. 8086CPU的16位标志寄存器中每位均有确定含义。( ) 270. 所有PC机具有相同的机器指令。( ) 271. CPU至少包含一个处理器。( ) 272. 微机主存储器的基本编址单元的长度为8位。( ) 273. 8088 中,取指令和执行指令可以重叠操作。( ) 274. 8086复位后,CPU从FFFFH:0000H处开始执行指令。( ) 275. 8086CPU寄存器中,负责与I/O接口交换数据的寄存器是DX。( ) 276. 由逻辑地址可以唯一确定物理地址,因此,映射到该物理地址的逻辑地址是唯一的。( ) 277. 伪指令是指示性语句,不产生机器目标代码。( ) 278. 堆栈是以先进后出方式工作的存储空间。( ) 279. 8086CPU由总线接口部件与执行部件组成。( ) 280. 在8086CPU中,访存的指令地址只由指令指针IP提供。( ) 281. 指令周期是指CPU执行一条指令的时间。( ) 问:该程序的功能是: 282 . NOP指令不使CPU执行任何操作,因此执行它不需要任何时间。 程序执行完成后,(AX)= ( ) 261. DATA SEGMENT 283. 间接寻址不能同时用于目的和源操作数。( ) BUFF DB 00H,64H,12H,41H,35H 284. 指令AND AL,0 和指令MOV AL,0执行后的结果完全一样。( ) DB 7FH,80H,0ABH,0EFH,5FH RESULT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUFF ;第十行 MOV AL,[BX] INC BX MOV CX,9 AGAIN: CMP AL,[BX] JB NEXT MOV AL,[BX] NEXT: INC BX DEC CX ;第十八行 JNZ AGAIN ;第十九行 MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS END START ①执行上面程序后[RESULT]= ②用一条指令替换第十行,要求替换后功能不变 285. 通常I/O接口又称为I/O端口( ) 286. 8088 的可屏蔽中断的优先权高于非屏蔽中断。( ) 287. 多个外设可以通过一条中断请求线,向CPU发中断请求。( ) 288. EPROM 虽然是只读存储器,但在编程时可向内部写入数据。( ) 289. 中断服务程序可放在用户可用的内存的任何区域。( ) 四、程序填空: 290. 两个非组合BCD数(BY0,BY1)进行十进制减法,并将差求绝对值后保存在SD单元 MOV AL,BY0 CMP AL,BY1 JNC L1 MOV AH,BY1 MOV BY1,AL MOV AL,AH L1: SUB AL,BY1 MOV SD,AL 291. 设有一个已定义的数据段如下: DATA SEGMENT VAR1 DB ? , ? VAR2 DB ? , ? ADR DW VAR1,VAR2 DATA ENDS 第9页 计 算 机 原 理 与 应 用 练 习 题
填空使ADR+2的字单元中存放内容为“0022H” 。 292. 下面的程序段是统计AX中16位二进制数1的个数,并将结果放在CX中,填空使程序完成预定的功能 XOR CX,CX L1: AND AX,AX JZ STOP SHL AX,1 INC CX L2: JMP L1 STOP: HLT 293. 下面的程序段是求8个无符号数累加和, 最后结果用双字表示,存在YAH和YAL单元,填空使程序完成预定的功能 DATA SEGMENT TABLE DW 34,789,67,78,345,89,78,60 YAH DW 0 YAL DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,0 XOR AX, AX MOV BX, OFFSET TABLE MOV CX, 8 CLC LP: ADD AX, [BX] DON: INC BX INC BX LOOP LP MOV YAL,AX ;存和 MOV YAH,DX MOV AH,4CH INT 21H CODE ENDS END START 294. 将两个非压缩的BCD码合成一位压缩型BCD码 D1 DB ? D2 DB ? BCD DB ? : MOV AL, D1 AND AL, 0FH AND AH, 0FH MOV CL, 4 295. 下面程序段是判断DA1和DA2两个字存储单元中的数是否同为正数,若是,则将0→AX中,否则-1AX,试在每一个空白处各填上一条条件分支指令(两个空白处要求利用不同的标志位选用的适应的条件分支指令) MOV AX,DA1 MOV BX,DA2 XOR AX,BX TEST BX,8000H MOV AX,0 JMP DONE NEXT: MOV AX,-1 DONE: ? 296. 以下子程序DISPL是利用DOS功能调用INT 21H,将一个DL中的字节数据的低四位以ASCII码的形式显示出来。试填写程序空白。 DISPL CMP DL, 9 JBE NEXT ADD DL, 7 NEXT: ADD DL, 30H RET DISPL ENDP 297. 下面操作是利用DOS功能调用INT 21H的1号功能模块,从键盘输入字符,并存到STR起始的存储区,遇到回车符(其ASCII码为0DH)结束。提示:出口参数AL=输入字符的ASCII码 STR DB 100 DUP (?) : : : MOV SI, OFFSET STR NEXT1: INT 21H JE NEXT INC SI 298. 下面一段程序完成对某一缓冲区清零,缓冲区长度为100个字,缓冲区首址DI=0200H,并设(ES)=3000H,试填空: CLD MOV AX, 3000H MOV ES, AX MOV DI, 0200H MOV AL, 00H REP STOSB 299. 下面程序是计算两个多字节数之和的程序 ,这两个数在10050H地址开始的内存单元连续存放,低位在小地址的一端,计算结果存放在这两个数之后,设这两个多字节的数均为16字节。程序如下: STRAT: MOV DS, AX MOV SI, 50H MOV DI, 60H 第10页 计 算 机 原 理 与 应 用 练 习 题
MOV CX, 8 AA: MOV AX, [SI] MOV [BX],AX PUSHF ADD SI, 2 ADD DI, 2 ADD BX, 2 HLT 300. 在XI起始地址中,有10个有符号字节数据,统计其中正数的个数,并将个数放在AH寄存器中。 CHAR DB 10DUP(?) INT 21H LOOP ADR 303. 已知从BUF单元起存有若干带符号,将其中的正数找出并存入PLUS单元,负数存入MINUS单元,把下列程序补充完整: DATA SEGMENT BUF DB 12,-2,3,4,-80,-1,6,8,-11,-23 CN EQU $-BUF PLUS DB CN DUP (?) MINUS DB CN DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX : : : : MOV SI,OFFSET BUF MOV DI,OFFSET PLUS MOV AH,0 MOV CX,10 MOV BX,OFFSET MINUS MOV CX, ADR2: NEXT: MOV AL,[SI] INC SI JS ADR1 TEST AL,80H INC AH ADR1: INC BX PP MOV [DI],AL INC 301. 已知在数据段中设置两个变量X和Y,二者满足下列表达式,试 JMP LP 填写程序空白。 10 当X≥10 Y= X 当-10<X<10 -10 当X≤-10 ∶ X DB ? Y DB ? PP: MOV [BX],AL BX LP: NEXT MOV AH,4CH INT 21H CODE ENDS ∶ END START 五、程序改错: CMP AL,10 304. 指出下列程序中的错误: STAKSG SEGMENT MOV AL,10 DB 100 DUP (?) JMP NEXT2 NEXT1: CMP AL,-10 JG NEXT2 JMP NEXT3 NEXT2: NEXT3: ?? 302. 下列操作是利用INT 21H的2号功能模块调用,将字节数据变量X1的内容以二进制数形式从高位到低位逐位在屏幕上显示出来。试补充空白处的指令。提示:入口参数DL=要显示的字符的ASCII码。 X1 DB ? : : MOV CX, 8 ADR: MOV DL, X1 STA_SG ENDS DTSEG SEGMENT DATA1 DB ? DTSEG END CDSEG SEGMENT MAIN PROC FAR START: MOV DS,DTSEG MOV AL,34H ADD AL,4FH MOV DATA1,AL START ENDP CDSEG ENDS END 305. 下列程序求一组带符号字节数据的平均值,数据的首地址为DATA,数据个数存放在CNT单元,程序有逻辑错误,请将错误改正 第11页 计 算 机 原 理 与 应 用 练 习 题
DSEG SEGMENT DATA DB 100,-100,90,20,-120,60 CNT DB 0005H AVER DB ? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG MAIN MOV AX,DS MOV DS,AX MOV SI,OFFSET DATA MOV CH,0 MOV CL,OFFSET CNT AGAIN: ADD DL,[SI] ADC DH,0 DEC CX LOOP AGAIN DIV CL MOV AVER,AL RET MAIN ENDP CSEG ENDS END MAIN 306. 下面是将内存一字节数据高4位和低4位互换并放回原位置的程序,找出错误并改正。 DATA SEGMENT DD1 DB 23H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,OFFSET DD1 MOV AL,[SI] MOV CL,4 RCR AL,CL MOV [SI],AL MOV AH,4CH INT 21H CODE ENDS END START 307. 下面的程序是将内存单元一字节数据乘以10放回单元的程序,找错并改正。 DATA SEGMENT DA DW 34 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET DA MOV AL,[SI] MUL 10 MOV [SI],AX MOV AH,4CH INT 21H CODE ENDS END START 308. 下列程序至少有10处错,请找出来 ***********EXAM???********** DSEG SEGMENT ARGX DB 100 RLT DB ? DSEG END CSEG SEGMENT ASSUME CS:CSEG;DS:DSEG BEGIN: MOV AX,DATA MOV DS,AX MOV AX,ARGX OR AL,AL JS ABS1 JE MOVE CMP AL,8 JBE ONE CMP AL,0FH JGE MOVE SHL AL,2 ADD AL,ARGX SUB AL,2 JMP MOVE ONE ADD AL,10 JMP MOVE ABS1 NEG AL,AL MOVE MOV RLT,AX HALT DSEG ENDP ENDS START 309. 下述程序执行后,应将LIST数组中的最大值存入MAX单元,数组元素为无符号字数据,数据个数在CNT单元中。现已知程序有错,请改正。 DSEG SEGMENT LIST DW 1,200,30,400,0,7,4000 CNT DB 7 MAX DW ? DSEG ENDS CSEG SEGMENT ASSUME DS:DSEG,DS:CODE FMAX: MOV DX,DSEG MOV DS,AX LEA SI,LIST MOV CX,CNT CLD LODSW DEC CX CMP SL,[SI] JLE SMALL LODSW SMALL: INC SI INC SI DEC CX 第12页
|
|