实验内容、程序清单及运行结果
1、编程完成问题7.9中的程序,要求使用至少两种不同的寻址方式实现。
1.[bx+si+idata]
代码如下:
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db '1.display '
db '2.brows '
db '3.replace '
db '4.modify '
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
begin:
mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov sp,16
mov bx,0
mov cx,4
p:
push cx
mov si,0
mov cx,4
k:
mov al,[bx+si+2]
and al,11011111B
mov [bx+si+2],al
inc si
loop k
add bx,16;bx+16
pop cx
loop p
mov ax,4c00h
int 21h
codesg ends
end begin
结果如下:
2.[bx+idata]
代码如下:
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db '1.display '
db '2.brows '
db '3.replace '
db '4.modify '
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
begin:
mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov sp,16
mov bx,0
mov cx,4
mov si,3
p:push cx
mov cx,4
k: mov al,[bx+si]
and al,11011111b
mov [bx+si],al
inc si
loop k
mov si,3
add bx,16
pop cx
loop p
mov ax,4c00h
int 21h
codesg ends
end begin
2、有如下定义
DATA SEGMENT
DW 1,1,18 DUP (0)
DATA SEGMENT
请编写程序将裴波那契数列的前20项补充完整。
assume cs:code,ds:data
data segment
dw 1,1,18 DUP(0)
data ends
code segment
begin:
mov ax,data
mov ds,ax
mov ax,0
mov bx,4
mov cx,18
p:
mov ax,[bx-2]
add ax,[bx-4]
mov [bx],ax
inc bx
inc bx
mov ax,0
loop p
mov ax,4c00h
int 21h
code ends
end begin
运行结果:
- 猴子第一天摘下若干个桃子,当即吃了一半,不过瘾,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第十天,只剩下一个桃子。求这十天猴子每天拥有的桃子个数。
代码如下:
assume cs:code
code segment
begin:
mov ax,1000h
mov ss,ax
mov sp,20
mov bx,1
mov cx,10
s:
push bx
inc bx
add bx,bx
loop s
mov ax,4c00h
int 21h
code ends
end begin