IBM_PC汇编语言程序的设计课后习题答案(第二版沈美明))

2026/4/27 2:54:55

DSEG SEGMENT

MUL1 DD ? ;32位被乘数

MUL2 DW ? ;16位乘数

MUL0 DD 0,0 ;乘积用64位单元存放

DSEG ENDS

;--------------------------------------------------------------------------

CSEG SEGMENT

MAIN PROC FAR

ASSUME CS: CSEG, DS: DSEG

START: PUSH DS ;设置返回DOS

SUB AX, AX

PUSH AX

MOV AX, DSEG

MOV DS, AX ;给DS赋值

BEGIN: MOVZX EBX, MUL2 ;取乘数,并0扩展成32位

MOV EAX, MUL1 ;取被乘数

MUL EBX

MOV DWORD PTR MUL0, EAX ;保存积的低位双字

MOV DWORD PTR[MUL0+4], EDX ;保存积的高位双字

EXIT: RET

MAIN ENDP

CSEG ENDS ;以上定义代码段

;--------------------------------------------------------------------------

END START

80386作32位乘法运算用一条指令即可完成,而8086则需用部分积作两次完成。

5.26 如数据段中在首地址为MESS1的数据区存放着一个长度为35的字符串,要求把它们传送到附加段中的缓冲区MESS2中去。为提高程序执行效率,希望主要采用MOVSD指令来实现。试编写这一程序。

答:80386的程序如下:

.386

.MODEL SMALL

.STACK 100H

.DATA

MESS1 DB ‘123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’,? ;长度为35的字符串

.FARDATA

MESS2 DB 36 DUP (?)

.CODE

START: MOV AX, DATA

MOV DS, AX ;给DS赋值

MOV AX, FARDATA

MOV ES, AX ;给ES赋值

ASSUME ES:FARDATA

BEGIN: LEA ESI, MESS1

LEA EDI, MESS2

CLD

MOV ECX, (35+1)/4 ;取传送的次数

REP MOVSD

;--------------------------------------------------------------------------

MOV AX, 4C00H ;返回DOS

INT 21H

END START

5.27 试用比例变址寻址方式编写一386程序,要求把两个64位整数相加并保存结果。

答:80386的程序如下:

.386

.MODEL SMALL

.STACK 100H

.DATA

DATA1 DQ ?

DATA2 DQ ?

.CODE

START: MOV AX, DATA

MOV DS, AX ;给DS赋值

BEGIN: MOV ESI, 0

MOV EAX, DWORD PTR DATA2[ESI*4]

ADD DWORD PTR DATA1[ESI*4], EAX

INC ESI

MOV EAX, DWORD PTR DATA2[ESI*4]

ADC DWORD PTR DATA1[ESI*4], EAX

;--------------------------------------------------------------------------

MOV AX, 4C00H ;返回DOS

INT 21H

END START


IBM_PC汇编语言程序的设计课后习题答案(第二版沈美明)).doc 将本文的Word文档下载到电脑
搜索更多关于: IBM_PC汇编语言程序的设计课后习题答案(第二版沈美明)) 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

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