微机原理课后习题解答 下载本文

PUSH PUSH PUSH MOV REPZ JZ POP POP POP RET YES: MOV COMP CODE END

CX SI DI CX, S_LTH CMPSB YES DI SI CX

;如果两个串相同,则说明找到

MOV AH, 4CH INT ENDP ENDS MAIN

RES, 0FFH

21H

11.执行下列指令后,AX寄存器中的内容是什么?

TABLE DW 10,20,30,40,50 ENTRY DW 3

. . MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,[BX] 答:(AX)=40

12.指出下列程序中的错误: STAKSG SEGMENT

DB 100 DUP(?)

STA_SG ENDS DTSEG SEGMENT

DATA1 DB ?

DTSEG END CDSEG SEGMENT

MAIN

PROC

FAR

START: MOV DS,DATSEG

MOV AL,34H ADD AL,4FH MOV DATA,AL

START ENDP CDSEG ENDS

END

答案: 改正后: STAKSG SEGMENT

DB

100 DUP(?)

STAKSG ENDS DTSEG DATA

SEGMENT DB ? ENDS

DTSEG

CDSEG SEGMENT MAIN

PROC

FAR

ASSUME CS: CDSEG, DS: DTSEG, SS: STAKSG

START: MOV AX, DTSEG

MOV DS, AX MOV AL, 34H ADD AL, 4FH MOV DATA1, AL MOV AH, 4CH INT

21H

MAIN ENDP ENDS END

START

CDSEG

13.请写出上述两条指令执行后,BX寄存器中的内容。

DATA

SEGMENT

TABLE_ADDR DW 1234H

ENDS

DATA

MOV BX, TABLE_ADDR LEA

BX, TABLE_ADDR

答案: MOV BX,TABLE_ADDR ;执行后(BX)=1234H

LEA BX,TABLE_ADDR ;执行后(BX)=OFFSET TABLE_ADDR

14.读下面程序,在其中的空处添上适当内容。该程序完成了什么功能?程序运行后,变量RS的值是多少?

DATA SEGMENT

BUF

DB -13,24,5,-62 DB 77,20,-7,145,0

CNT DB $ -BUF RS DATA ENDS STACK

SEGMENT PARA STACK DB 256 DUP(?) ENDS DB 0

STACK

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK

START

PROC FAR PUSH DS

MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA BX,BUF

MOV CH,0 MOV CL,

LP: MOV AL,[BX]

TEST AL,80H JE INC INC LOOP LP RET ENDP

CONT RS BX

CONT:

START CODE ENDS

END START

答:程序空处可填CNT,字节变量RS的最后结果是04H。该程序实现的功能是:统计数据段中以BUF为首址的带符号字节数据表中负数的个数,CNT为表中所有数据的个数,即表的长度。需要注意的是:十进制数据“145”在以二进制带符号字节数据形式存放时相当于“-111”。

15.试编写一个汇编语言程序段,要求对键盘输入的小写字母用大写字母显示出来。 答案: abc: mov

int cmp jb cmp ja sub mov mov int jmp

ah,1 21h al,’a’ stop al,’z’ stop al,20h dl,al ah,2 21h abc

stop: ret

16.编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示“MATCH”,若不同则显示“NO MATCH”。

答案:datarea

segment

string1 db ‘asfioa’