不同寻址方式的灵活应用

实验内容、程序清单及运行结果

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

运行结果:

  1. 猴子第一天摘下若干个桃子,当即吃了一半,不过瘾,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第十天,只剩下一个桃子。求这十天猴子每天拥有的桃子个数。

代码如下:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值