微型计算机原理课后答案(2)

2018-12-20 10:10

XCHG 20H[BX][SI],AX ;(AX)=5678 H ,(09226H)=1234 H

17、若CPU中各寄存器及RAM参数如图所示,试求独立执行如下指令后,CPU及RAM相应寄存器及存储单元的内容是多少?

CPU RAM 执行前 执行后 CS 3000H FFFFH CX 20506H 06H 不变 DS 2050H 0004H BX 20507H 00H 不变 SS 50A0H 1000H SP 20508H 87H 不变 ES 0FFFH 17C6H DX 20509H 15H 不变 IP 0000H 8094H AX 2050AH 37H 94H DI 000AH 1403H BP 2050BH C5H 不变 SI 0008H 1 CF 2050CH 2FH 不变

(1)MOV DX,[BX+2] ;(DX)=0006H,(BX)=0004H (2)PUSH CX ;(SP)=0FFEH (3)MOV CX,BX ;(CX)=0004H,(BX)=0004H (4)TEST AX,01 ;(AX)=8094H,(CF)=0 (5)MOV AL,[SI] ;(AL)=87H (6)ADC AL,[DI] ;(AL)=0CCH,(CF)=0 DAA ;(AL)=32H (7)INC SI ;(SI)=0009H (8)DEC DI ;(DI)=0009H (9)MOV [DI],AL ;((DI))=94H (10)XCHG AX,DX ;(AX)=17C6H,(DX)=8094H (11)XOR AH,BL ;(AH)=84H,(BL)=04H (12)JMP DX ;(IP)=17C6H

18、(DS)=2000H,(BX)=1256H,(SI)=528FH,偏移量=20A1H,(232F7H)=3280H,(264E5H)=2450H,

试求执行下述指令后的结果。 (1) JMP BX ;(IP)=1256 H (2) JMP TABLE[BX] ;(IP)=3280 H (3) JMP [BX][SI] ;(IP)=2450 H

19、设(IP)=3D8FH,(CS)=4050H,(SP)=0F17H,当执行CALL 2000H:0094H后,试指出(IP)、(CS)、

(SP)、((SP))、((SP)+1)、((SP)+2)和((SP)+3)的内容。 CALL指令是5字节指令,下一条指令地址为4050H:3D94H 所以执行后 (IP)=0094H,(CS)=2000H、(SP)=0F13H ((SP))=94H,((SP)+1)=00H,((SP)+2)=00H,((SP)+3)=20H

20. 设(IP)=3D8FH,(CS)=4050H,(SP)=0F17CH,当执行:CALL 2000:0094H后,试指出(IP)、(CS)、(SP)、((SP))、((SP)+1)、((SP)+2)和((SP)+3)的内容。 (IP) = 0094H(CS)= 2000H(SP)= 0F178H 压4个字节进栈,- 4H ((SP))= 8FH

((SP)+1)= 3DH ((SP)+2)= 50H ((SP)+3)= 40H

第五章 汇编语言程序设计

1.画图说明下列语句所分配的存储空间及初始化情况。

(1)42H 59H 54H 45H 00H EEH 00H 07H 01H 02H 01H 02H 07H 00H 07H 01H 02H 01H 02H 07H 00H 07H 01H 02H 01H 02H 07H

(2)00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 07H 00H FBH FFH 59H 42H 45H 54H 02H 56H 2.(PLENTH)=22H;它表示数据与的长度 3.(L)=06H

2.PLENTH的值为0022,它表示当前已分配单元空间; 3.L的值为6;

4. 假设程序中的数据定义如下:

LNAME DB 1,2,3,‘123’ ADDRESS DB 30 DUP(?) CTTY DB 15 DUP(?) CODE_LIST DB 1,7,8,3,2

(1)用一条MOV指令将LNAME的偏移地址放入BX

(2)用一条指令将CODE_LIST的头两个字节的内容放入SI

(3)写一条伪指令定义符使CODE_LENGTH的值等于CODE_LIST域的实际长度。

答案(1)MOV BX, OFFSET LNAME

(2)MOV SI,WORD PTR CODE_LIST (3)CODE_LENGTH EQU $ - CODE_LIST

5. 对于下面的数据定义,试说明三条MOV指令的执行结果。 TABLEA DW 10 DUP(?) TABLEB DB 10 DUP(?) TABLEC DB ‘123’

MOV AX,LENGTH TABLEA ;(AX)= 10 MOV BL,LENGTH TABLEB ;(BL)= 10 MOV CL,LENGTH TABLEC ;(CL)= 1

6.(1).(AX)=1 (2).(AX)=2 (3).(CX)=20 (4).(DX)=40 (5).(CX)=1 7.是说明下列指令中那些需要加上PR伪指令定义符。

(1).不需要(2)不需要(3)SUB [BX],WORD BYTE 2(或其他形式)(4).MOV CL,BYTE PTR WVAL 8.编一宏定义BXCHG,将一字节高4位和低4位交换。 BXCHG MARCO OPR MOV AL ,OPR MOV CL,04H ROL AH,CL ROR AL,CL OR AH , AL MOV OPR,AH ENDM

9.已知宏定义,展开宏调用:OPP BH,BL,CH,CL +MOV AX,BX +XCHG AL,CL +MOV AX,BL +XCHG AL,CH +MOV BL,AL

10.将寄存器中的16位数分成四组,每组四位,分别存放在AL,BL,CL和DL中。 MOV CH,04H MOV CL,AL MOV DL,AL SHR CL,CH AND DL,AH MOV AL,AH MOV BL,AH SHR AL,CH AND BL,0FH 或

MOV AX, 4A82H MOV DL,AH AND DL,0F0H MOV CL,4

SHR DL,CL PUSH AX

AND AH,0FH MOV BH,AH AND AL,0F0H MOV BL,AL MOV CL,4 SHR BL,CL MOV CL,BH POP AX

AND AL,0FH

11. data segment

string1 db 'I am a student.' string2 db 'I am a student .' yes db 'match',0dh,0ah,'$' no db 'no match',0dh,0ah,'$'

data ends

code segment

assume cs:code,ds:data,es:data start: push ds

sub ax,ax push ax mov ax,data mov ds,ax mov es,ax lea si,string1 lea di,string2

mov cx,string2-string1 cld

repe cmpsb jnz dispno mov ah,9 lea dx,yes int 21h jmp exit dispno: mov ah,9 lea dx,no int 21h

exit: MOV AH,4CH INT 21H code ends

11.试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示MATCH,若不相同则显示NOMATCH. 解:DATA SEGMENT

STRING1 DB ‘ABCDE’ STRING2 DB ‘ABCDEF’ MESG1 DB ‘MATCH$’ MESG2 DB ‘MATCH$’ DATA ENDS STACK SEGMENT

BUF DB 100DUP(?) STACK ENDS

CODE SEGMENT MAIN PROC FAR START:PUSH DS MOV AX,0 PUSH AX PUSH ES

MOV AX,DATA

MOV DS,AX

MOV AL,STRING1 MOV CL,6

MOV SI,OFFSET STRING1 MOV DI,OFFSET STRING2 CLD

REPE CMPSB JZ ALLMATCH

MOV DX OFFSET MESG2 MOV AH,9 INT 21H RET

ALLMATCH: MOV DX OFFSET MESG1

MOV AH 9 MOV 21H RET

MAIN ENDP CODE ENDS

END START

13.编写程序,将一个包含有20个数据的数组M分成两个数组,正数组P和负数组N,分别把这两个数组中的数据的个数显示出来。 解:DATA SEGMENT

M DB 1 ,2,3,4,5,6,7,8,9,10

DB -1,-2,-3,-4,-5,-6,-7,-8,-9,-10

P DB 20DUP(?)

N DB 20DUP(?)

DATA ENDS CODE SEGMENT MAIN PROC FAR START:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AL,0

MOV SI OFFSET M MOV CX 20H

LOOP1: MOV BL,M[SI]

CMP AL,M[SI JAE LOOP2 MOV N,BL

INC SI

CMP CX,20H JZ LOOP3 JMP LOOP1

LOOP2: DEC CX

MOV P, BL INC SI

CMP CX,20H JZ LOOP3 JMP LOOP1

LOOP3: MOV DX,OFFSET P

MOV AH,9

INT 21H

MOV DX,OFFSET N MOV AH, 9 INT 21H

RET

MAIN ENDP CODE ENDS

END START 13. DATA SEGMENT

M DB 11H,22H,33H,44H,64H,87H,34,29,67H,88H,0F6H DB 43H,0B7H,96H,0A3H,233,56H,23H,56H,89H C EQU 20 P DB 20 DUP(?) N DB 20 DUP(?)

PLUS DB 'PLUS',0DH,0AH,'$' MINUS DB 'MINUS',0DH,0AH,'$' J DB 2 DUP(?) DATA ENDS

CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,M LEA DI,P LEA BX,N MOV CX,C MOV DX,0 LOOP1: LODSB TEST AL,80H

JNZ MINUS1 ;负数转移 MOV [DI],AL INC DI

INC DH ;存正数个数 JMP AGAIN

MINUS1: MOV [BX],AL INC BX INC DL ;存负数个数 AGAIN: DEC CX

JNZ LOOP1

MOV WORD PTR J,DX ;存结果 MOV DX,OFFSET MINUS MOV AH,9

INT 21H ;显示提示信息 MOV BL,J MOV CH,2 ROTATE: MOV CL,4 ROL BL,CL MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL POR ADD AL,7 POR: MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE ;十六进制形式输出负数个数 MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H

MOV DX,OFFSET PLUS MOV AH,9 INT 21H

MOV DH,J+1 MOV CH,2 ROTATE1: MOV CL,4 ROL DH,CL MOV AL,DH AND AL,0FH ADD AL,30H CMP AL,3AH JL POR1 ADD AL,7 POR1: MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE1 MOV AH,4CH INT 21H CODE ENDS END START

16. 数据段中已定义了一个有n个字数据的数组M,试编写程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。 DATA SEGMENT n EQU 6

M DW -66, 33, 55, -89, 28, 311 DW ? DB ? DATA ENDS START:

MOV AX, DATA MOV DS, AX LEA BX, M


微型计算机原理课后答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:银行零售部年终工作总结

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

马上注册会员

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