微机原理及应用(陈继红、徐晨)课后习题答案
STOSB/STOSW 无存放目的地 址 无
3.29 用串操作指令设计实现以下功能的程序段:首先将 100H个数从 2170H处搬到
1000H处,然后,从中检索相等于
VAL中字符的单元,并将此单元值换成空格符。 解答:
START:MOV AX, DS MOV ES, AX MOV SI, 2170H MOV DI, 1000H MOV CX, 100H CLD
REP MOVSB
ANOTHER:MOV DI, 1000H MOV AL, VAL MOV CX, 100H CLD
AGE: SCASB JZ FIN DEC CX JNZ AGE JMP OVER
FIN: MOV BYTE PTR[DI-1],20H CMP CX,0 JNZ AGE OVER: RET
3.30求双字长数 DX∶AX的相反数。 答: NEG DX NEG AX SBB DX,0
3.31试对数据段偏移地址为
101H单元中的单字节数求补后存入 102H,最高位不变, 低
7位取反存入 103H,高 4位置 1,低
4位不变,存入 104H。 答:
MOV AX,[0101H] MOV BX,AX MOV CX,AX NOT AX
MOV [0102H],AX XOR BX,7FH
MOV [0103H],BX AND CX,0F0H MOV [0104H]
3.32 试编写一个程序,比较两个同长字符串 STRING1和
STRING2所含字符是否相同, 若相同
MATCH单元赋值 1,若不相同 MATCH单元赋值 0。 答案: 6
微机原理及应用(陈继红、徐晨)课后习题答案
程序段为: ;数据定义
STRING1 DB ‘ABCDEFGHIJK
STRING2 DB ‘ABCDFGKJMATCH DB ? ;功能代码
MOV AX,SEG STRING1 MOV DS,AX
MOV AX,SEG STRING2 MOV ES,AX LEA SI, STRING1 LEA DI, STRING2
MOV CX, STRING1- STRING2 CLD
REPE CMPSB JZ EQUAL
MOV MATCH,0 JMP OVER
EQUAL:MOV MATCH,1 OVER:HLT
;串
1,作为源串 ;串
2,作为目标串 ;定义
MATCH单元
;源串段地址送 DS
;目标串段地址送 ES
;源串偏移地址送 SI
;目标串偏移地址送 DI
;重复次数送 CX
;地址增
;相等继续比较,不相等退出 ;退出时,若
ZF=1,表示两串相等 ;不相同,
MATCH单元赋值 0
;相同
MATCH单元赋值 1
3.34编写代码 ,计算
a+10b+100c+20d,其中
a、b、c、d均为单字节无符号数,结果为 16
位,存入
SUM开始的两单元中。 data segment ma db 12 mb db 21 mc db 86 md db 150 SUM dw 0
data ends code segment
assume ds:data,cs:code
start:mov ax,data mov ds,ax mov dh,0 mov dl,ma mov ah,0 mov al,10 mul mb add dx,ax mov ah,0 mov al,100 mul mc add dx,ax
mov ah,0 7