1、编写程序,实现将内存偏移地址为 1000H 开始的连续 100 个字节送往偏移地址为 2000H 开始的连续 100 个内存单元中。
源代码:
DATA SEGMENT
ORG 1000H
X DB 100 DUP(1)
ORG 2000H
Y DB 100 DUP(2)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CL,100
MOV SI,1000H
MOV DI,2000H
NEXT: MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
LOOP NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START
2 、在数据段变量名为 A 的数据区内有 10 个字符,编程实现将这 10 个字符以相反次序传送到 附加段变量名为 B 的内存区中。data segment A db '1234567890' n equ $-a B db n dup(?) data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax lea si,a lea di,b add di,—— mov cx,__ move: mov al,[si] mov [di],al inc si —————— loop move mov ah,4ch int 21h code ends end start
源程序已部分给出,请将程序补充完整,并调试运行结果。
源程序:
data segment
A db '1234567890'
n equ $-a
B db n dup(?)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea si,a
lea di,b
add di,n
mov cx,n
move: mov al,[si]
mov [di],al
inc si
dec di
loop move
mov ah,4ch
int 21h
code ends
end start
3 、 数据段开始区域中,连续存放着 10 个带符号数,编程序找出这 10 个数中最大的一个数,并将其存到该数据区的后面。
源代码:
DATA SEGMENT
X DB 1,-2,3,10,-21,4,5,10,31,2
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,X
MOV CL,9
MOV AL,[SI]
NEXT: INC SI
CMP AL,[SI]G=0
JG MAX
MOV AL,[SI]
MAX: LOOP NEXT
MOV RESULT,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START