中北大学微机原理及接口技术习题及练习册
JNO L1 JNO L4 JNC L2 JMP L5
SUB AX,BX 答案:L5
2、中断服务程序结束时,用RET指令代替IRET指令能否返回主程序?这样做存在什么问题? 答案:RET应该可以使中断服务程序返回主程序,但因为RET是子程序返回指令,它只从堆栈中恢复CS和IP,而不能使状态字PSW得以恢复,所以不能使断点完全恢复,对源程序的继续执行造成不良影响。
3、写出把首地址为BLOCK字数组中的第6个字,送到DX寄存的指令(或指令组),要求使用以下几种寻址方式:
(1) 寄存间接寻址; (2) 寄存相对寻址; (3) 基址变址寻址 答案: 1) MOV BX,OFFSET BLOCK+6
2) LEA BX,BLOCK
MOV DX,[BX] MOV DX,[BX+12] MOV DX,[BX+SI]
3) LEA BX,BLOCK MOV SI,12
4. 设BX=134AH,BP=1580H,DI=0528H,SI=0234H,DS=3200H,SS=5100H,求在各种寻址方式下源操作数的物理地址。
1) MOV AX, [2400H] 2) MOV AX, [BX] 3) MOV AX, [SI] 4) MOV AX, [BX+2400H] 5) MOV AX, [BP+2400H] 6) MOV AX, [BX+DI] 7) MOV AX, [BP+SI+2400H]
二、阅读下面的程序段,写出运行结果 1. CLC
MOV AX,248BH MOV CL,3
RCL AX,CL 执行以上程序序列后, AX=_____2458H_______。
2. MOV BX,6D16H
MOV CL,7
SHR BX,CL 执行后BX寄存器中的内容_____00DAH________。
3. MOV DX,01H
MOV AX,42H MOV CL,4 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL
OR DL,BL 执行后 (DX)=__(DX)=0010H___,(AX)=_(AX)=0420H__
9
中北大学微机原理及接口技术习题及练习册
4. mov ax,693ah
mov al,ah not al add al,ah
inc al 程序段执行后,AL= ___0000___ 、ZF= _____1_____。
5. 根据程序填空(程序段顺序执行)
MOV CL, 58 ;CL= 58 MOV AL, 79 ;AL= 79 ADD AL, CL ;AL= 89 H, AF= 1 , CF= 0 DAA ;AL= 8FH , AF= 1 , CF= 0
三、判断题
1. 执行下列指令可以将00H送到端口地址为1A0H的外设上。 ( × )
MOV AL,00H
MOV 1A0H ,AL 2. 执行下列指令可以将其00H送到端口地址为2F8H的外设上:( √ )
MOV AL,00H MOV DX,2F8H OUT DX,AL 3. 8088的MOV指令不能进行两个存储器单元之间的数据直接传送。( √ ) 4. 8088系统中,堆栈的存取可以以字或字节为单位。 ( × )
5. IN和OUT指令可寻址的口地址为64K个,端口地址只能用立即数。( × ) 6. 判断下列指令是否正确 (1) JMP (2) IN (3) MOV (4) SHL
BX AL,DX DS,AX AX,2
√ √ √ × × × × √
(9) PUSH SS (10) POP
CS
√ × × × × × × ×
(11) XCHG BX,IP (12) MOV (13) IN (14) MOV (15) IN (16) MOV
[BX],[1000] AL,N;(N>255) [BX][DI],10 BX,DX CS,AX
(5) PUSH AL (6) MOV (7) MOV (8) MOV
ES,3F00H [BX],[SI] AL,[BX+10H]
第4章 汇编语言程序设计
4.1 基本练习题
一、填空题
1.标号和变量都是存贮单元的符号地址,但其内容不同,标号是______指令_______的符号地址,而变量是____操作数________的符号地址。
2.汇编语言源程序结束伪指令是_____END ______。 3.一个程序中,有下列伪指令:
ARY DB 25 DUP(3,4,4 DUP(?,1,0)) LEN DW $ - ARY
1 0
中北大学微机原理及接口技术习题及练习册
LEN单元存储的值是 350 。 4.有一个程序片段如下
MSG DW 3 DUP(?, 2 DUP (5,4),3) MEN DW $-MSG ┇ ┇
MOV AX, SEG MEN MOV DS, AX MOV AX, MEN
AX的值最后是 36 。
二、简答题
1.简述8086汇编语言中,指令语句和伪指令语句的区别和作用。
答:指令是真正让计算机进行某种具体操作的命令,它在程序运行时执行。伪指令是通知汇编程序在翻译程序时执行的命令。
2.什么是变量,变量有哪些属性,如何使用这些属性?
答:变量是在程序运行过程中,其值可以改变的量,通常给其命名一个符号,称为变量名。变量有三种属性:变量的类型、变量的段地址、变量的段内偏移地址;类型属性使用SIZE获取,段地址属性用SEG获取,偏移地址属性用OFFSET获取。 3.试说明为什么有时候必须使用PTR属性操作符?
答:变量是在程序运行过程中,其值可以改变的量,通常给其命名一个符号,称为变量名。变量有三种属性:变量的类型、变量的段地址、变量的段内偏移地址;类型属性使用SIZE获取,段地址属性用SEG获取,偏移地址属性用OFFSET获取。 4.什么是汇编语言,什么是汇编?
答:汇编语言是用指令助记符、符号地址编写程序的一种语言,每条指令对应一种机器指令。汇编就是将汇编语言源程序翻译成机器指令的过程
5.简述DOS系统功能调用的使用方法?
答:1)在AH寄存器中设定所需调用的功能号;2)根据功能的规定设定入口参数;3)用INT 21H进入子程序;4)根据规定,从相应的寄存器取得返回值。 三、程序设计题
1.从BUFF单元起有一个字符串(长度小于65535),以'*'结束,编写一个完整程序求该字符串长度存入LENT单元,并统计字符串中含有大写英文字符的个数并存入COUNT单元。要求源程序具备必要的伪指令和段说明。 1. DATA SEGMENT INC CX BUFF DB 'ABCD??.*' CMP AL,'A' LENT DW ? JC NEXT COUNT DW ? CMP AL,'Z' DATA ENDS JNC NEXT CODE SEGMENT INC DX ASSUME CS:CODE,DS:DATA NEXT: INC BX START:MOV AX,DATA JMP LP MOV DS,AX DONE: INC CX LEA BX,BUFF MOV LENT,CX MOV CX,0 MOV COUNT,DX MOV DX,0 MOV AH,4CH LP: MOV AL,[BX] INT 21H CMP AL,'*' CODE ENDS JZ DONE END START
11
中北大学微机原理及接口技术习题及练习册
2.有一带符号8位数X存于DAT单元.编一个程序段判断该数,若x小于0则将0FFH送MARK单元;若X等于0则将MARK+1单元置0FFH;若X大于0则置MARK+2单元为0FFH。 2. MOV AL,DAT JMP DONE AND AL,AL LPl: MOV MARK,0FFH JS LP1 JMP DONE JZ LP2 LP2: MOV MARK+1,0FFH MOV MARK+2,0FFH DONE: HLT
3.已知有X、Y、Z三个字变量,存放无符号整数,请编一个完整的程序实现公式Z=(X+Y)/(X-Y+600)(不考虑溢出情况)。
答:DSEG SEGMENT SUB BX,Y X DW ? ADD BX,600 Y DW ? MOV AX,X Z DW ? ADD AX,Y DSEG ENDS MOV DX,0 CSEG SEGMENT DIV BX ASSUME CS:CSEG,DS:DSEG MOV Z,AX MAIN PROC FAR MOV AH,4CH BEGIN: MOV AX,DSEG INT 21H MOV DS,AX MAIN ENDP MOV BX,X CSEG ENDS
END BEGIN
4.AX寄存器中存放着4位十六进制数。试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCII码,并依次存放到RESULT数组的4个字节中去,要求用调用子程序的方法实现。 CODE SEGMENT HASC PROC NEAR ASSUME CS:CODE,DS:CODE MOV DL,AL START: MOV BX,CODE AND DL,0FH MOV DS,BX CMP DL,9 MOV CL,4 JA L2
MOV BL,4 ADD DL,30H MOV SI,OFFSET RESULT L1: RET
LP: CALL HASC L2: ADD DL,37H MOV [SI],DL JMP L1 INC SI HASC ENDP
SHR AX,CL RESULT DB 4 DUP(?) DEC BL CODE ENDS JNZ LP END START EXIT: MOV AH,4CH INT 21H
5.写出对存放在DX和AX中的双字长数求补的指令序列。
方法1 方法2 方法3 MOV CX,0 NOT AX NEG DX SUB CX,AX NOT DX NEG AX MOV AX,CX ADD AX,1 SBB DX,0 MOV CX, 0 ADC DX,0 SBB CX, DX MOV DX, CX
6.设有两个等长字符串。试编写一个汇编语言程序,比较它们是否完全相同;若相同,则将字符\送入AL中,否则,将字符\送入AL中。 6. CODE SEGMENT REPE CMPSB
1 2