汇编实验二
程序员文章站
2022-06-17 11:50:01
...
问题
数据的建立与传送程序:
- 在内存10000H单元开始,建立00H~0FH~00H 31个数,要求00H~0FH数据逐渐增大,0FH~00H逐渐减小。该程序从内存CS:0100H地址开始输入。
MOV AX, 1000H
MOV DS, AX
MOV SI, 0
MOV CL, 0FH
XOR AX, AX
PPE1: MOV [SI], AL
INC SI
INC AL
DEC CL
JNZ PPE1
MOV CX, 10H
PPE2: MOV [SI], AL
INC SI
DEC AL
LOOP PPE2
INT 20H
问题一
该程序从内存CS:0150H开始输入。把数据块传送到15050H开始的存贮区域中。
MOV AX, 1000H
MOV DS, AX
MOV SI, 0
MOV DI, 5050H
MOV CX, 1FH ; 数据块长度是31
PPEA: MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
LOOP PPEA
INT 20H
问题二
用串传送指令MOVSB,把数据块传送到15150H开始的区域,该程序从内存CS:0200H开始输入。
根据:
MOVSB|MOVSW
;串传送:ES:[DI]←DS:[SI]
;然后:SI←SI±1/2,DI←DI±1/2
DF=0(执行CLD指令):地址指针增加(+)
MOV AX,1515 ; 目的段地址
MOV ES,AX; 立即数不能直接送到段寄存器
MOV AX,1000; 源数据段地址
MOV DS,AX
MOV AX,0
MOV DI,AX
MOV SI,AX
MOV CX,1E; 数据长度为31
CLD ;地址指针增加
L1 MOVSB
LOOP L1
问题三
用重复串操作指令“REP MOVSB”把数据块传送到15250H开始的区域。该程序从CS:250H地址开始输入
根据:
MOVSB|MOVSW
;串传送:ES:[DI]←DS:[SI]
;然后:SI←SI±1/2,DI←DI±1/2
DF=0(执行CLD指令):地址指针增加(+)
REP
;执行一次串指令,CX减1;直到CX=0
MOV AX,1525 ; 目的段地址
MOV ES,AX; 立即数不能直接送到段寄存器
MOV AX,1000; 源数据段地址
MOV DS,AX
MOV AX,0
MOV DI,AX
MOV SI,AX
MOV CX,1E; 数据长度为31
CLD ;地址指针增加
REP MOVSB
问题四
( 用串操作的减量工作方式,把数据块传送到25050H开始的区域。该程序从CS:0300H开始输入。
根据:
MOVSB|MOVSW
;串传送:ES:[DI]←DS:[SI]
;然后:SI←SI±1/2,DI←DI±1/2
DF=1(执行STD指令):地址指针减小(-)
REP
;执行一次串指令,CX减1;直到CX=0
MOV AX,2505 ; 目的段地址
MOV ES,AX; 立即数不能直接送到段寄存器
MOV AX,1000; 源数据段地址
MOV DS,AX
MOV AX,1E
MOV DI,AX
MOV SI,AX
MOV CX,1E; 数据长度为31
STD ;地址指针增加
REP MOVSB
上一篇: jQuery实现div局部刷新
推荐阅读
-
Java concurrency线程池之线程池原理(二)_动力节点Java学院整理
-
ios使用AVFoundation读取二维码的方法
-
iOS使用CIFilter生成二维码
-
C# 对Outlook2010进行二次开发的图文教程
-
CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解
-
ubuntu系统中安装mysql5.6(通过二进制)
-
Java基于二维数组实现的数独问题示例
-
LibrarySystem图书管理系统(二)
-
二本重点文科大学名单及分数线汇总2021年参考(含河南、重庆等省份)
-
浙江本科分数线2021最低分数多少?附预测2021年浙江二本分数线