云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > IBM-PC汇编语言程序设计课后习题答案第二版沉美明资料

IBM-PC汇编语言程序设计课后习题答案第二版沉美明资料

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 3:44:50

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: MOV BX, MUL2 ;取乘数

MOV AX, WORD PTR MUL1 ;取被乘数低位字 MUL BX

MOV MUL0, AX ;保存部分积低位 MOV MUL0+2, DX ;保存部分积高位

MOV AX, WORD PTR[MUL1+2] ;取被乘数高位字 MUL BX

ADD MUL0+2, AX ;部分积低位和原部分积高位相加 ADC MUL0+4, DX ;保存部分积最高位,并加上进位 EXIT: RET MAIN ENDP

CSEG ENDS ;以上定义代码段

-------------------------------------------------------------------------- END START

80386的程序如下(假设为无符号数):

.386 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

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

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: MOV BX, MUL2 ;取乘数 MOV AX, WORD PTR MUL1 ;取被乘数低位字 MUL BX MOV MUL0, AX ;保存部分积低位 MOV MUL0+2, DX ;保存部分积高位 MOV AX, WORD PTR[MUL1+2] ;取被乘数高位字 MUL BX ADD MUL0+2, AX ;部分积低位和原部分积高位相加 ADC MUL0+4, DX ;保存部分积最高位,并加上进位 EXIT: RET MAIN ENDP CS

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com