汇编语言 将数据段中的一个字符串传送到附加段中,然后将附加段中的字符串输出到屏幕上。求填空 5

DATASSEGMENT;定义源数据段MSRDB"HELLO,WORLD!$"LENEQU$-MSRDATASENDSEXDASEGMENT;定义附加数据段MSDDBLE... DATAS SEGMENT ;定义源数据段
MSR DB "HELLO,WORLD!$"
LEN EQU $- MSR
DATAS ENDS

EXDA SEGMENT ;定义附加数据段
MSD DB LEN DUP(?)
EXDA ENDS

STACK1 SEGMENT STACK ;定义堆栈段
DW 20 DUP(?)
STACK1 ENDS

CODE SEGMENT ;定义代码段
ASSUME CS:CODE, DS:DATAS, ES:EXDA
START: MOV AX, DATAS
MOV DS, AX ;装载数据段寄存器
MOV AX, EXDA
MOV ES, AX ;装载附加数据段寄存器
MOV SI, OFFSET MSR ;设置SI
MOV DI, OFFSET MSD ;设置DI
MOV CX, LEN
NEXT: ① ;开始传输数据

INC SI
INC DI
DEC CX
JNZ NEXT
PUSH ES
POP DS ;将附加段寄存器指向的段值赋给DS寄存器
MOV DX, OFFSET MSD
MOV AH, 9
INT 21H
KEY: MOV AH, 01H ;判断是否有按键按下?
INT 16H ;为观察运行结果,使程序有控制的退出
JZ KEY
MOV AX, 4C00H ;结束程序退出
INT 21H
CODE ENDS
END START
可以使用串操作指令完成以上功能吗?源程序是什么
展开
 我来答
做而论道
高能答主

推荐于2017-11-26 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
仅用两句传送指令,即可。
……

MOV CX, LEN
NEXT:
MOV AL, DS[SI] ; ① ;开始传输数据
MOV ES[DI], AL ; ②
INC SI
……
程序中,已经给出了 INC SI、INC DI,
所以就不能用串传送指令。
否则,就重复加一了。
MMMXXXQQQDDD
2015-05-09
知道答主
回答量:1
采纳率:0%
帮助的人:1254
展开全部
s1 segment
STRING1 db 'ABCDEF'
STRING2 db 6 dup(?)
h db 24h
s1 ends
s2 segment stack
dw 100(?)
top label word
s2 ends
s3 segment
assume ds:s1,ss:s2,cs:s3
p proc far
lea sp,top
mov ax,s1
mov ds,ax
mov es,ax
lea si,STRING1
lea di,STRING2
mov cx,6
cld
rep movsb
lea dx,STRING2
mov ah,9
int 21h
mov ah,4ch
int 21h
s3 ends
end p
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式