实用文档
0FF00:0FFFCH 0FF00:0FFFDH 0FF00:0FFFEH 0FF00:0FFFFH
44H 33H 22H 11H
SP
3-7.设在数据段偏移地址为 2000H 单元开始的地方连续存放了 0 ~ 15 的平方值。试写 出包含有 XLAT 指令的指令序列,用来查找 0~15 围的某个数 N 的平方值(设 N 的值存 放在 CL 寄存器中)。
答:
MOV BX, 2000H MOV AL, CL XLAT
3-8.试用简单的几条指令完成对 AL 寄存器中的无符号数乘以 12 的操作。要求只能用 移位、加法及 MOV 指令。
答: MOV AH, 0 MOV CL, 2 SHL AX, CL MOV BX, AX SHL AX, 1 ADD AX, BX
;AL 左移两位,相当于乘 4 ;保存
;AL 再左移一位,相当于原数乘 8 ;相当于原数乘 12
3-9.已知程序段如下:
MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX
问:执行完每条指令后,AX=? CF=? SF=? ZF=?(设在执行第一条指令前 CF=SF=ZF=0)。 答: AX=8D00H
CF=0,SF 及 ZF 不确定。 3-10.执行如下三条指令后:
MOV AH,0 MOV AL,7 ADD AL,5
问:(1) 若再执行一条非组合 BCD 码加法调整指令 AAA 后,AX 的容为多少? (2) 若 题中的三条指令后紧跟的是一条组合 BCD 码加法调整指令 DAA,则执行完 DAA 后 AX 的 容为多少?
实用文档
答:
实用文档
(1) AX=0102H (2) AX=0012H
3-11.已知 AX=14C6H,BX=80DCH,问执行下列程序段后,程序转向何处?
ADD AX,BX
JNC L2 SUB AX,BX JNC L3
JMP L4
若初始 AX=B568H,BX=54B7H,情况又如何? 答:
程序转向地址标号 L2 处。
若初始 AX=B568H,BX=54B7H,程序转向地址标号 L4 处。 3-12.如下程序完成什么功能?
MOV AX,5000H MOV DS,AX MOV CX,100 MOV AX,0 MOV SI,AX
START:ADD AX,[SI+1000H]
ADD SI,2 LOOP START MOV [200H],AX 答:
程 序 完 成 存 5000H:1000H 开 始 的 连 续 100 个 字 数 据 的 求 和 , 并 将 和 数 存 于 5000H:200H 处。
3-13、试写一程序片段,将当前数据段偏移地址为 2000H 开始的 100 个字节单元容 与偏移地址为 3000H 开始的 100 个字节单元容相交换,即:偏移地址 2000H 对应单元 容与偏移地址 3000H 对应单元容交换,偏移地址 2001H 对应单元容与偏移地址 3001H
对应单元容交换,依此类推。
答:
MOV SI, 2000H MOV DI, 3000H MOV CX, 100
REPT0: MOV AL, [SI]
MOV BL, [DI] MOV [DI], AL MOV [SI], BL INC SI INC DI LOOP REPT0
3-14.在数据段中偏移地址分别为 1000H 及 2000H 开始的存储区有两个 10 字节的字
实用文档
符串,试编写一段程序来比较这两个字符串。如果这两个字符串不同,则程序转至 8000H:1000H 处,否则顺序执行。
答:
MOV SI,1000H MOV DI,2000H MOV CX,10 CLD REPE CMPSB JCXZ CONTI JMP 8000H:1000H
CONTI: NOP
3-15.利用串操作指令将数据段中偏移地址 1000H 开始处的 100 个字节移动到数据段 偏移地址为 1050H 开始的地方。
答:
MOV CX,100
;装入源串偏移地址 ;装入目的串偏移地址 ;装入字符串长度 ;方向标志复位
MOV SI,1000H+99
MOV DI,1050H+99 STD
;地址减量方式传送
REP MOVSB
;数据块传送(串操作)
实用文档
4-1.如下定义:
VAR1 DB 4
VAR2 DB 10 CNST1 EQU 12 试指出下列指令的错误原因: (1)MOV CNST1,CX (3)CMP VAR1,VAR2 答:
(1) 目的操作数不能是立即数;
(2)MOV VAR1,AX (4)CNST1 EQU 24
第 4 章 汇编语言程序设计
习题
为字; (2) VAR1 单元定义为字节类型,而 AX
(3) 8086/8088 中两个存单元不能直接比较;
(4) 同一符号名不允许用 EQU 重复定义。 4-2.某人定义了如下数据段:
DATA SEGMENT AT 1000H
VAL1 DB 11H VAL2 DW 22H, 33H VAL3 DB 5 DUP (44H) DATA ENDS
试指明该数据段中偏移地址从 100H 到 109H 的各存贮单元的容。 答:
100H: 11H 101H: 22H 102H: 00H 103H: 33H 104H: 00H 105H: 44H 106H: 44H 107H: 44H 108H: 44H 109H: 44H
4-3.对于下面的数据定义,写出各条指令执行后的结果:
DATA SEGMENT ORG 0100H
AAAA DW 0A244H
BBBB DB 33H,66H,92H,29H CCCC EQU WORD PTR BBBB
ORG 100H