计算机组成原理与汇编语言程序设计--习题及解答(8)

2020-04-14 17:06

精彩网站 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

精彩网站 http:// www.iquwu.com

上述程序段运行期间,当执行完 INC BX 且 (BX)=05H时,CX和AL中的内容分别是多少? 解:(AL)=2+4+2+3+2+4++2+3+2+4=28=1CH , (CX)=6 23.

DB1 DB 4 DUP (2,4,6,8) LEA BX , DB1 MOV CX , 10H MOV AX , 0 LOP: ADD AL , [BX] AND AL , 0FH CMP AL , 8 JBE NEXT INC AH

SUB AL , 08H NEXT:LOOP LOP

上述程序段执行后,(AX)=?如果LOOPNE指令替代LOOP指令,那么上述程序段执行后,(AX)=? (CX)=? 解:

由上表可知道,上述程序段执行后,(AX)=0600H,(CX)=0

如果LOOPNE指令替代LOOP指令,那么上述程序段执行后,(AX)=0300H (CX)=8

24. 下面程序段是判断寄存器AH和AL中第三位是否相同,如相同,AH置0,否则AH置非0。试在空白处填上适当的指令(一个空白处只填一条指令)。

AND AH , 08H

33

精彩网站 http:// www.iquwu.com

MOV AL , 0FFH JMP NEXT ZERO: MOV AH , 00 NEXT: ……

25. 试用两条指令完成对寄存器AH和AL分别加1,且AL中加1形成的进位加在AH最低位,AH中形成的进位加在AL的最低位. 解: INC AX , 0101H

ADC AL , 0

26. 在数据段中有一乘法表(TAB1~TAB9),乘数和被乘数分别在MUL1和MUL2的字节单元中.试编写一程序,用查表法求出(MUL1)*(MUL2)的乘积.数据段如下: DATA SEGMENT

TAB1 DB 1,2,3,4,5,6,7,8,9

TAB2 DB 2,4,6,8,10,12,14,16,18 TAB3 DB 3,6,9,12,15,18,21,24,27 TAB4 DB 4,8,12,16,20,24,28,32,36 TAB5 DB 5,10,15,20,25,30,35,40,45, TAB6 DB 6,12,18,24,30,36,42,48,54 TAB7 DB 7,14,21,28,35,42,49,56,63 TAB8 DB 8,16,24,32,40,48,56,64,72 TAB9 DB 9,18,27,36,45,54,63,72,81 MUL1 DB 3 MUL2 DB 6 PROD DB 0 DATA ENDS 解:

MOV BX,OFFSET DA1 MOV DL,MUL1 DEC DL MOV DH,00H ADD BX.DX MOV AL,MUL2 DEC AL MUL AL,9 ADD AL,DL ADD BX,AX MOV AL,[BX]

34

精彩网站 http:// www.iquwu.com

MOV PROD,AL

27. 试编写一程序,把DA_BY1字节存储单元的8位二进制数分解为3个八进制数,其中字高位八进制数存放在DA_BY2的字节单元中,最低位存放在DA_BY2+2单元中.例如数据单元定义如下:

DA_BY1 DB 6BH

DA_BY2 DB 3 DUP(0) 解:

LEA DI , DA_BY+2

MOV AL , DA_BY1

XOR AH , AH MOV DL , 3 MOV CL , 3 SHL AX , 3 LOP: SHR AL , CL PUSH AX

AND AL , 7 MOV [DI] , AL DEC DI DEC DL POP AX JNZ LOP

29.试编制一程序,统计DA_WORD数据区中正数, 0 , 负数的个数.数据区为: DATA SEGMENT

DA_WORD DW - 1,3,5,0, - 5, -7, - 4,0, -7, …… COUT1 DB $ - DA_WORD

COUT2 DB 0 ; 存放正数的个数

DB 0 ; 存放0的个数 DB 0 ; 存放负数的个数 解:

MOV BX , OFFSET DA_WORD ;BX指向数据区 MOV CX , COUT1 ;设置循环次数

LOP: MOV AX , [BX] ;取数

35


计算机组成原理与汇编语言程序设计--习题及解答(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:旅游专业建设与教学改革思路及措施

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: