欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编实验二

程序员文章站 2022-06-17 11:50:01
...

问题

数据的建立与传送程序:

  1. 在内存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

汇编语言Dos 下debug

问题一

该程序从内存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
    
相关标签: ASM