微机原理习题答案(5)

2019-01-10 10:34

7.已知数据段定义如下:

DSEG SEGMENT

ORG 6 VAR1 DB 2,18

ORG $ +2 VAR2 DW 569AH CONT EQU $–VAR2

DB ?AB‘

DSEG

ENDS

用示意图说明该数据段的分配情况。 答:有关存储单元的内容如下图所示。

8.判断以下说法是否正确,如有错,请说明原因并改正。 (1)伪指令在汇编过程中不会产生二进制代码。

(2)宏和过程的相同之处是都可用于简化源程序书写、精简目标代码。 (3)在计算机中,高级语言通常需要转换为汇编语言后才能执行。 (4)汇编语言程序上机一般包括编辑、汇编、链接和调试几个步骤。 答:(1)正确。 (2)错误。宏不能精简目标代码。 (3)错误。高级语言程序经编译或解释后直接转换为目标代码。 (4)正确。

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

TABLE DW 10,20,30,40,50

ENTRY DW 3 . .

MOV BX,OFFSET TABLE ADD MOV

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

DB 100 DUP(?)

STA_SG ENDS DTSEG SEGMENT

20

BX,ENTRY AX,[BX]

答:(AX)=1E00H

DATA1 DB ?

DTSEG END CDSEG SEGMENT

MAIN

PROC MOV ADD MOV

FAR DS,DATSEG AL,34H AL,4FH DATA,AL

START: MOV

START ENDP CDSEG ENDS

END 答案: 改正后:

STAKSG SEGMENT DB 100 DUP(?) STAKSG ENDS DTSEG SEGMENT DATA DB ? DTSEG ENDS 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 CDSEG ENDS END START

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

DATA DATA

MOV LEA

BX, TABLE_ADDR BX, TABLE_ADDR SEGMENT

DW 1234H

ENDS TABLE_ADDR

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

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

21

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

DATA

BUF

RS DATA STACK

STACK CODE START

SEGMENT

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

SEGMENT PARA STACK DB 256 DUP(?) ENDS SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK PROC PUSH MOV PUSH MOV MOV MOV MOV TEST JE

INC LOOP RET ENDP ENDS END

START FAR DS AX,0 AX AX,DATA DS,AX CH,0 CL, AL,[BX] AL,80H CONT RS BX LP

CNT DB $ -BUF

LEA BX,BUF

LP: MOV

CONT: INC

START CODE

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

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

22

答案: 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

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

答案:datarea segment

string1 db ?asfioa‘ string2 db ?xcviyoaf‘ mess1 mess2

db ?MATCH‘,‘$‘ db ?NO MATCH‘,‘$‘

datarea ends prognam segment main

start:

proc far

assume cs:prognam,ds:datarea push ds sub ax,ax push ax mov ds,ax mov es,ax

begin:

;赋初值

mov cx, string2-string1 mov bx, mess1-string2 cmp bx,cx jnz dispno lea lea

;返回DOS

mov ax,datarea

;比较两字符串的长度

dx,addr ;若长度相同 si,string1

23

lea repe jne mov lea int ret

di,string2 ;地址指针赋初值 cmpsb dispno ah,9 dx,mess1 21h

;不同,显示NO MATCH

;相同,显示MATCH

;比较

dispno: mov ah, 9

lea int ret

main

endp end

start

prognam ends

21h

dx, mess2

15.编写一个完整的源程序,将数据35、-27、-13、6、-47、52、9、-3中的正数放入以BUFFER为首址的数据缓冲区中。

答:一种可能的程序如下实现:

DATA SEGMENT BLOCK DB 35,-27,-13,6,-47,52,9,-3 COUNT EQU $-BLOCK BUFFER DB COUNT DUP(?)

DATA ENDS

STACK SEGMENT PARA STACK?STACK‘ DW 40 DUP(?)

STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK BEGIN: MOV AX,DATA MOV DS,AX MOV ES,AX ;需用STOS串操作指令 MOV CX,COUNT LEA SI,BLOCK ;源数据区指针 LEA DI,BUFFER ;正数存放区指针 CLD ;自动增量 AGAIN: LODSB ;取源数据,并修改SI TEST AL,80H ;取符号位,不影响AL JS GO ;符号位=1,是负数,不存 STOSB ;存正数并修改DI GO: LOOP AGAIN MOV AH,4CH ;退出循环,返回DOS INT 21H CODE ENDS END BEGIN

16.从内存单元BUF开始的缓冲区中有7个8位无符号数,依次为13H、

24


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

下一篇:数字电路课程设计-数电交通灯设计

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

马上注册会员

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