教材上的习题
P205 1 解:A1 - 4字节,A2 - 6字节,A3 - 40字节,A4 - 60字节 P205 4 解:PAR偏移地址为0, PLENTH 当前偏移地址$=2+16+4=22, $-PAR=22,故PLENTH的值为22 P205 5 解:AX=1,BX=20,CX=1
P206 6 解: 应讨论最高位为1和0的情况。如输入最高位为1,AH=0;输入最高位为0,AH=0FFH。
IN AL,5FH ;假如输入后AL=45H
TEST AL,80H ;执行01000101 AND 10000000后ZF=1,AL=00H JZ L1 ;ZF=1,转到L1 MOV AH,0 JMP STOP
L1: MOV AH,0FFH ;结果AH=0FFH STOP: HALT
补充题
阅读程序并完成填空
(1) ADDR1开始的单元中连续存放两个双字数据,求其和,并将和存放在ADDR2开始的单元(假定和不超过双字)
MOV CX,2 XOR BX,BX CLC
NEXT: MOV AX,[ADDR1+BX]
ADC AX, MOV [ADDR2+BX],AX INC BX
NEXT 解:
[ADDR1+BX+4] INC BX LOOP
(2) 在数据段ADDR1地址处有200个字节数据,要传送到数据段地址ADDR2处。
MOV AX, SEG ADDR1 MOV DS, AX
MOV ES, MOV SI, MOV DI, OFFSET ADDR2 MOV ,200 CLD
REP
解: AX
OFFSET ADDR1 CX
MOVSB
(3)已知有某字串BUF1的首地址为2000H, 数据段与附加段重合。欲从BUF1处开始将20个字数据顺序传送至BUF2处。(假设BUF1和BUF2有地址重叠)
LEA SI, BUF1 ADD SI, LEA DI, BUF2 STD
MOV CX, REP MOVSW
解: 38
ADD DI, 38 20
(4)设有一个首地址为ARRAY,有N个字数据的数组,要求求出该数组之和,并把结果存入TOTAL地址中。(假设和不超过两个字节)
MOV CX, MOV AX,0 MOV SI,0
START: ADD AX,
ADD SI, 2 DEC CX JNZ START
MOV ,AX
解: N
ARRAY[SI] TOTAL
(5)将段地址为1000H、偏移地址为STR的5个字节的内容逐一装入累加器中,加1后,再送入STR为首地址的存储单元。
MOV AX, 1000H MOV ES, AX MOV DS, AX
MOV DI, SI MOV CX,5 CLD
NEXT: LODSB
ADD AL, 1
LOOP NEXT
解:
LEA SI, STR STOSB
(6)下列子程序统计字符串的长度,入口参数DI为字符串首地址,字符串以0DH结束;返回参数CX中为统计得到的字符串长度。
STRLEN PROC
PUSH AX PUSH DI MOV CX,0
REPEAT: MOV AL,[DI] JE EXIT
EXIT: STRLEN ENDP
解:
CMP AL, 0DH INC CX
JMP REPEAT POP AX
INC DI
POP DI
RET
因篇幅问题不能全部显示,请点此查看更多更全内容