当前位置:首页 > 计算机组成原理与汇编语言程序设计--习题及解答
精彩网站 http:// www.iquwu.com
11. DATA1 EQU BYTE PTR DADA2
DATA2 DW 0A987H , 3456H SAR DATA1+1,1 MOV AX , DATA2+1
SAL DATA2+1 , 1 MOV BX , DATA2=1
上述指令执行后,(AX)=? (BX)=? CF=? 以DATA2为首地址的两 个字单元内容是多少?
解: SAR DATA1+1,1;移位前10101001,移位后110100100,CF=1 MOV AX , DATA2+1; (AX) = 3456H
SAL DATA2+1 , 1 ; 移位前0011 0100 0101 0110
移位后0110 1000 1010 1100,CF = 0 MOV BX , DATA2+1 ; (BX) = 68ACH 12. MOV AL , 0FH XOR AL , 0FFH MOV CL , 7 SHR AL , CL
上述几条指令执行后,(AL)=? , 如将SHR指令换成ROR或RCR,那么AL的内容分别为多少?
解:执行XOR AL,0FFH后
执行 SHR AL , CL 后,
结果, (AL) = 00000000B=0
14. DATA SEGMENT ORG $+10H
DA1 DB ?ABCDEFEDCBA? DA2 DB ?E? DATA ENDS ……
LEA DI , DA1 MOV AL , DA2
29
精彩网站 http:// www.iquwu.com
MOV CX , DA2 – DA1 CLD
REPNE SCASB
上述程序段运行后,(DI)=? (CX)=? 答: (DI) = DA1+4 , (CX)=5 16. DATA SEGMENT
VAR1 DB ? , ? VAR2 DB ? , ?
ADR DW VAR1,VAR2 DATA ENDS
若要使ADR+2 字单元的内容为0022H, 上述空白处应填写什么语句? 解:上述空白处应填写
ORG 0020H 17.现有下列程序段:
MOV SI , OFFSET SOUR MOV DI , OFFSET DEST MOV CX , 20H CLD
REP MOVSW 如果上述程序段不使用串操作指令(即取消REP MOVSW指令), 试修改程序段,完成原程序段功能. 解: MOV SI , OFFSET SOUR MOV DI , OFFSET DEST MOV CX , 20H
LOP: MOV AX , [SI] MOV [DI] , AL INC SI INC SI INC DI INC DI LOOP LOP
18. 下面是两个字符串的比较程序,比较结果存放在RESULT单元中.试问: (1) 程序运行后,结果单元(RESULT)存放的内容表示什么意义?
(2) 如SJ1的字符串为?captial?,SJ2的字符串为?captive?时,(RESULT)=? SJ1 DB ?…………? SJ2 DB ?…………? RESULT DB 0
30
精彩网站 http:// www.iquwu.com
……
LEA BX , SJ1 LEA DI , SJ2 CLD
LOP: MOV AL , [BX] SCASB
JNE EXIT INC BX JMP LOP
EXIT: SUB BX,OFFSET SJ1 MOV RESULT , BL 答:(1) (RESULT)存放的内容表示SJ1字串中第一个不同于SJ2字串的对应字符的偏移量(相对于SJ1).
(2) (RESULT) = 5
19. 仔细阅读下面程序,试给出程序运行结束后BUF2各字节存储单元的内容。 DATA SEGMENT
BUF1 DW 0102H,0304H,0708H COUNT EQU $ - BUF1 BUF2 DW 5 DUP(0) DATA ENDS COSEG SEGMENT
ASSUME CS:COSEG, DS,DATA BEING: MOV AX , DATA
MOV DS , AX MOV BX , 0 MOV SI , 0 MOV DL , 2 LOP1: MOV CX , COUNT/2
LOP2: MOV AL , BYTE PTR BUF1[SI] MOV BL , AL ADD AL , BL
MOV BYTE PTR BUF2[BX] ,AL INC SI INC SI LOOP LOP2 MOV SI ,1 DEC DL JNE LOP1
31
精彩网站 http:// www.iquwu.com
MOV 4CH INT 21H COSEG ENDS
END BEING
20. TEST DX , 01H
JE L1
L1: ……
上述程序段运行后使DX中的数据形成偶数,如原来已是偶数,DX中内容不变;如DX中原来是奇数,试回答:
(1)用加1形成偶数,这时空白处应填一条什么指令? INC DX
(2)用减1形成偶数,这时空白处应填一条什么指令? DEC DX
21.DA1 DB 2,3,7,0AH,0FH,4,5,9,8,0CH
XOR AX , AX ; AX=0 MOV CL , 0 ; CL-0 MOV BX , 0 ; BX=0
LOP: TEST DA1[B X] , 01H ; 测试存储单元的数据是否偶数 JE NEST ; 是偶数,则跳转 ADD AL , DA1[BX] ;是奇数,将其累加 INC AH ; 计算奇数个数
NEXT:INC BX ;指向下一个存储单元 INC CL ;数据个数计数器
CMP CL , 10 ;运行后,(AL)=奇数之和=39=27H JNE LOP ;(AH)=10 上述程序运行后,AH和AL的内容分别是多少? 22. AA1 DB 10H DUP(2)
AA2 DW 10H DUP(0304H) ……
MOV BX , 0 ;设置数据指针 MOV AL , 0 ;设置累加器初值 MOV CX , 10 ;设置计数器初值 BB1: ADD AL , AA1[BX] ;累加 ADD AL , BYTE PTR AA2[BX] ;累加
INC BX ;修改数据指针 LOOP BB1 ;循环10次
32
共分享92篇相关文档