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

课后习题答案(4)

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

32H 1

下面的程序段中有2LOOP1:MOV AL,[SI]

33H 2

SUB AL,30H

34H 3

MOV [SI],AL 1 4 INC SI DEC CX 2 5 JNE LOOP1 3 6

4 7 MOV AH,4CH

INT 21H

CODE ENDS END START

9. 条转移指令,计算它们的相对位移量并填在空缺的机器代码处。 1000:001B F3A6 REPZ CMPSB 1000:001D 75 01 JNZ 0020 1000:001F CB SAME: RET 1000:0020 41 FOUND:INC CX 1000:0021 890E0600 MOV [0006],CX 1000:0025 EB F8 JMP 001F

答:两处空缺的机器码分别为01H、0F8H。 简析:

JNZ指令采用相对寻址方式,本题程序中JNZ的目标地址是同一段中偏移量为0020H处,当前IP=001FH,故有:相对偏移量=目标地址-当前IP值=01H。

JMP指令有多种寻址方式,本题程序中的JMP为段内直接跳转,也采用相对寻址方式。因当前IP=0027H,目标地址为001FH,因此有:相对偏移量=目标地址-当前IP值=0F8H(-8的补码)。

10. 阅读下面的程序,填空。从BUF开始的11个单元中存放着11个整数,找出这11个数中正数并且是偶数的个数存入R中。 DATA SEGMENT BUF DB –2,5,-3,6,100,0,-20,-9,8,-110,21 N= ① R DW ? DATA ENDS CODE SEGMENT ② BEGIN:MOV AX,DATA ③ LEA BX,BUF MOV CX,N ④

变量

BUF→ BCD→

值 31H EA 0

- 16 -

CMP [BX],BYTE PTR 0 ⑤

TEST [BX],BYTE PTR 1 ⑥ INC AX INC BX DEC CX ⑦ MOV R,AX

MOV AH,4CH INT 21H CODE ENDS END ⑧ 答:

① $-BUF

② ASSUME CS:CODE,DS:DATA ③ MOV DS,AX ④ MOV AX,0 ⑤ JLE NEXT ⑥ JNZ NEXT ⑦ JNZ LOPA ⑧ BEGIN

11. 读下面程序,在其中的空处添上适当内容。该程序完成了什么功能?程序运行后,变量RS的值是多少? DATA SEGMENT BUF DB -13,24,5,-62,77,20,-7,145,0 CNT DB $ -BUF RS DB 0 DATA ENDS

STACK SEGMENT PARA STACK‘STACK’

DB 256 DUP(?)

STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START PROC FAR

PUSH DS

MOV AX,0 PUSH AX

LOPA: NEXT :

- 17 -

MOV AX,DATA MOV DS,AX LEA BX,BUF MOV CH,0 MOV CL, LP: MOV AL,[BX] TEST AL,80H JE CONT INC RS CONT:INC BX LOOP LP RET START ENDP CODE ENDS END START 答:程序空处可填CNT,字节变量RS的最后结果是04H。该程序实现的功能是:统计数据段中以BUF为首址的带符号字节数据表中负数的个数,CNT为表中所有数据的个数,即表的长度。需要注意的是:十进制数据“145”在以二进制带符号字节数据形式存放时相当于“-111”。

12. 已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。

答:要传送的字符串有30个。 N=30

STACK SEGMENT STACK 'STACK' DW 100H DUP(?) TOP LABEL WORD STACK ENDS

DATA SEGMENT ASC1 DB 'abcdefghijklmnopqrstuvwxyz1234' ASC2 DB 30 DUP(?) DATA ENDS

CODE SEGMENT

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

MOV AX, DATA MOV DS, AX MOV ES, AX

- 18 -

MOV AX, STACK MOV SS, AX LEA SP, TOP MOV CX, N LEA SI, ASC1 ADD SI, CX LEA DI, ASC2 L1: DEC SI MOV AL, [SI] MOV [DI], AL INC DI LOOP L1

MOV AH, 4CH ;返回DOS MOV AL, 0 INT 21H

CODE ENDS END START

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

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

DATA

SEGMENT

35,-27,-13,6,-47,52,9,-3 $-BLOCK

COUNT DUP(?)

BLOCK DB COUNT EQU BUFFER DB DATA STACK

STACK CODE

ENDS

SEGMENT PARA STACK‘STACK’ DW ENDS SEGMENT

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

AX,DATA DS,AX ES,AX CX,COUNT SI,BLOCK

;源数据区指针 ;正数存放区指针 ;自动增量

;取源数据,并修改SI

DI,BUFFER

;需用STOS串操作指令

MOV MOV MOV LEA LEA CLD

40 DUP(?)

BEGIN: MOV

AGAIN: LODSB

- 19 -

TEST JS

STOSB LOOP MOV INT ENDS

AL,80H GO

AGAIN AH,4CH 21H

;取符号位,不影响AL ;符号位=1,是负数,不存 ;存正数并修改DI ;退出循环,返回DOS

GO:

CODE

END BEGIN

14. 已知有一个长100个字的数据块,存放在以3DA0H:1000H开始的存储区域内。试编写一个完整的汇编语言程序,将该数据块复制到以3DA0H:1008H开始的存储区内。

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

DATA

SEGMENT AT 3DA0H ORG 1000H

104 DUP(?)

ENDS

SEGMENT PARA STACK‘SSEG’ DB ENDS SEGMENT

ASSUME CS:CODE,SS:SSEG,DS:DATA,ES:DATA PROC PUSH MOV PUSH MOV MOV MOV MOV LEA ADD MOV ADD

STD REP RET ENDP ENDS END MAIN

FAR DS AX,0 AX

AX,SEG BLOCK DS,AX ES,AX CX,200 SI,BLOCK SI,199 DI,SI DI,8

MOVSB

;DI=10CFH ;自动减量

;SI=10C7H

;重复次数

100 DUP(?)

BLOCK DW DATA SSEG

SSEG CODE

MAIN

MAIN CODE

- 20 -

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

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