77范文网 - 专业文章范例文档资料分享平台

微机原理习题答案(5)

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库微机原理习题答案(5)在线全文阅读。

微机原理习题答案(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/415629.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: