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

第三章 80X86指令系统和寻址方式

来源:用户分享 时间:2025/5/15 8:29:31 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

(8)。RCL DX,CL (DX)=5CCH (9)。RCR DL,01 (DX)=0DCH 3.28 下列程序段执行后,BX 寄存器内容是什么? MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL 答:(BX)=C02DH 3.29 设数据定义如下:

CONAME DB ‘SPACE EXPLORERS INC。’ PRLINE DB 20 DUP(‘ ’) 用串指令编写程序段分别完成以下功能:

(1)。从左到右把CONAME中的字符串传送到PRLINE。 (2)。从右到左把CONAME中的字符串传送到PRLINE。 (3)。把CONAME第三和第四个字节内容装入AX中。 (4)。把AX寄存器内容存入PRLINE+5开始单元中。 (5)。检查CONAME中有无空格字符,如有传送到BH中。 (6)。编写程序段,把STRING中‘&’字符用空格代替。

解:(1)。从左到右把CONAME中的字符串传送到PRLINE。 Data segment

CONAME DB ‘SPACE EXPLORESINC。’ Count equ $-coname PRLINE DB 20 DUP(‘ ‘) Data ends Code segment

Assume ds:data,es:data,cs:code Start: mov ax,data Mov ds,ax Mov es,ax

MOV SI,OFFSET CONAME MOV DI,OFFSET PRLINE MOV CX,COUNT CLD

REP MOVSB Mov ah,4ch Int 21h Code ends

End start

(1)。从右到左把CONAME中的字符串传送到PRLINE。 Data segment

CONAME DB ‘SPACE EXPLORESINC。’ Count equ $-coname

PRLINE DB 20 DUP(‘ ‘) Data ends Code segment

Assume ds:data,es:data,cs:code Start mov ax,data Mov ds,ax Mov es,ax

MOV SI,OFFSET CONAME+COUNT-1 MOV DI,OFFSET PRLINE+COUNT-1 MOV CX,COUNT STD

REP MOVSB Mov ah,4ch Int 21h Code ends

End start

(3)。把CONAME第三和第四个字节内容装入AX中。 MOV SI,OFFSET CONAME LODSB

MOV AH,AL LODSB

XCHG AH,AL (4)。把AX寄存器内容存入PRLINE+5开始单元中。 MOV DI,OFFSET PRLINE STOSB

MOV AL,AH

STOSB

(5)。检查CONAME中有无空格字符,如有传送到BH中。 MOV DI,OFFSET CONAME MOV CX,COUNT MOV AL,20H CLD

REPNZ SCASB JNZ NEXT

DEC DI

MOV BH,ES:[DI] 。。。。。。 NEXT: 。。。。。。 (6)。编写程序段,把STRING中‘&’字符用空格代替。

Data segment

STRING DB ‘The data is FEB&03 ’ Count equ $-string Data ends Code segment

Assume ds:data,cs:code Start: mov ax,data Mov ds,ax

MOV DI,OFFSET STRING MOV CX,COUNT MOV AL,‘&’ CLD

REPNZ SCASB JNZ NEXT

DEC DI

MOV BYTE PTR[DI],‘ ’ NEXT:Mov ah,4ch Int 21h Code ends

End start

3.31 假设程序中数据定义如下:用串指令分别编写程序段。

(1)。用空格清除PRINT_LINE域。

(2)。在STUDENT_ADDR查找第一个‘—’ (3)。在STUDENT_ADDR查找最后一个‘—’ (4)。如果STUDENT_NAME域全是空格,填入‘*’

(5)。把STUDENT_NAME移到PRINT_LINE前30个字节中,把 STUDENT_ADDR移到PRINT_LINE后9个字节中。

答:(1)。用空格清除PRINT_LINE域。

Data segment

STUDENT_NAME DB 30 DUP(?) STUDENT_ADDR DB 9 DUP(?) PRINT_LINE DB 132 DUP(?)

Data ends

Code segment

Assume cs:code, ds:data,es:data, Start: mov ax,data Mov ds,ax Mov es,ax

MOV DI,OFFSET PRINT_LINE MOV CX,132 MOV AL,‘ ’ CLD

REP STOSB

Mov ah,4ch Int 21h Code ends

End start (2)。在STUDENT_ADDR查找第一个‘—’ Data segment

STUDENT_NAME DB 30 DUP(?)

STUDENT_ADDR DB ‘SPAC——E EXP—LORESI—NC’ Cont equ $-student_addr PRINT_LINE DB 132 DUP(?) Data ends Code segment

Assume cs:code, es:data, Start: mov ax,data Mov es,ax

MOV DI,OFFSET PRINT_LINE MOV CX,CONT MOV AL,‘—’ CLD

REPNZ SCASB JNZ NEXT

MOV DH,[DI-1] NEXT: Mov ah,4ch Int 21h Code ends

End start (3)。在STUDENT_ADDR查找最后一个‘—’

搜索更多关于: 第三章 80X86指令系统和寻址方式 的文档
第三章 80X86指令系统和寻址方式.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7ry860raor4c2db00685_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top