汇编基础 笔记4(《汇编语言》第六章)

 

程序取得所需空间的两种方法:

1.在加载程序的时候为程序分配(讨论)——通过在源程序中顶一段

2.程序在执行的过程中向系统申请

--------------------------------------

实验五

(1)

assume cs:code,ds:data,ss:stack

data segment

        dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

data ends

stack segment

        dw 0,0,0,0,0,0,0,0

stack ends

code segment

start:  mov ax,stack

        mov ss,ax

        mov sp,16

        mov ax,data

        mov ds,ax

        push ds:[0]

        push ds:[2]

        pop ds:[2]

        pop ds:[0]

        mov ax,4c00h

        int 21h

code ends

end start

cpu执行程序,程序返回前,cs=0bae,ss=0bad,ds=0bac

=>cs=x,data=x-2,stack=x-1

-----------------------------------

实验五(5)

编写code,将a段和b段中的数据依次相加,将结果存到c中

assume cs:code

a segment

        db 1,2,3,4,5,6,7,8

a ends

b segment

        db 1,2,3,4,5,6,7,8

b ends

c segment

        db 0,0,0,0,0,0,0,0

c ends

code segment

start:  mov ax,a

        mov ds,ax

        mov dx,0

        mov cx,8

      s:mov ax,b

        mov es,ax

        mov al,ds:[bx]

        mov ah,0

        mov dx,ax

        mov al,es:[bx]

        add dx,ax

        mov ax,c

        mov es,ax

        mov es:[bx],dx

        add bx,1

        loop s

        mov ax,4c00h

        int 21h

code ends

end start

感觉好长,不知道有没有办法短一点

-----------------------------------

-d 0bac:0 8

0BAC:0000  01 02 03 04 05 06 07 08-00                        .........

-d 0bad:0 8

0BAD:0000  01 02 03 04 05 06 07 08-00                        .........

-d 0bae:0 8

0BAE:0000  00 00 00 00 00 00 00 00-00                        .........

-g 0028

 

AX=0BAE  BX=0008  CX=0000  DX=0010  SP=0000  BP=0000  SI=0000  DI=0000

DS=0BAC  ES=0BAE  SS=0BAC  CS=0BAF  IP=0028   NV UP EI PL NZ NA PO NC

0BAF:0028 B8004C        MOV     AX,4C00

-t

 

AX=4C00  BX=0008  CX=0000  DX=0010  SP=0000  BP=0000  SI=0000  DI=0000

DS=0BAC  ES=0BAE  SS=0BAC  CS=0BAF  IP=002B   NV UP EI PL NZ NA PO NC

0BAF:002B CD21          INT     21

-p

 

Program terminated normally

-d 0bae:0 8

0BAE:0000  02 04 06 08 0A 0C 0E 10-00                        .........

------------------------------------------------------------

实验五(6)

编写code代码,用push指令将a段中的word数据,逆序存储到b段中

assume cs:code

a segment

        dw 1,2,3,4,5,6,7,8

a ends

b segment

        dw 0,0,0,0,0,0,0,0

b ends

code segment

start:  mov ax,b

        mov ss,ax

        mov sp,16

        mov ax,a

        mov ds,ax

        mov bx,0

        mov cx,8

      s:push ds:[bx]

        add bx,2

        loop s

        mov ax,4c00h

        int 21h

code ends

end start

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值