汇编网首页登录博客注册
girl_lulu的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  

[2010-08-09 01:41] 第5  6章   几种计算和的情况

一 计算一段内存空间中数据的和(累加和)

【P112】
assume cs:code
code segment
 mov ax,0ffffh
 mov ds,ax
 
 mov ax,0
 mov bx,0
 mov cx,12
 s: add al,[bx]
    mov ah,0
    add dx
    inc bx
    loop s
    
    mov 4c00h
    int 21h
code ends
end

注:8位数据,使用中间寄存器al/ah,最后存在dx中(要求一个字节一个字节累加)。



二 计算代码段(或数据段)中定义的数据之和(累加和)

【P124】
assume cs:code
code segment
 dw 0123h,0456h,0789h,0abch,0defh,0321h,0654h,0987h

 start: mov ax,0   //start开始出现,目的:使编译后的可执行文件能由操作系统直接执行,否则只能用debug来执行程序
        mov bx,0
        
        mov cx,8
        s: add ax,[bx]
        add bx,2
        loop s
    
        mov ax,4c00h
        int 21h
code ends
end start

注:16数据,直接加到ax中。



三 计算a段和b段之和(数据依次相加),并存到c段(8位数据,须用到中间寄存器ax:即al/ah)

【实验5(5)】
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 ax,0
       mov bx,0
       mov cx,8
       s: mov ah,0
          mov al,[bx]
          add al,[bx+10h]
          mov [bx+20h],al
          inc bx
          loop s
       
       mov ax,4c00h
       int 21h
code ends
end start


0B76:0013 884720        MOV     [BX+20],AL                         DS:0020=00
-g 16

AX=0002  BX=0000  CX=0008  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B73  ES=0B63  SS=0B73  CS=0B76  IP=0016   NV UP EI PL NZ NA PO NC
0B76:0016 43            INC     BX
-d c:0 7
000C:0000  EA AE 10 A7 00 E8 00 F0                           ........
-t

AX=0002  BX=0001  CX=0008  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B73  ES=0B63  SS=0B73  CS=0B76  IP=0017   NV UP EI PL NZ NA PO NC
0B76:0017 E2F2          LOOP    000B
-d c:0 7    //此时数据未变,是不是因为c段关联,如:cs:code,data:c
000C:0000  EA AE 10 A7 00 E8 00 F0                           ........
-d ds:20 27
0B73:0020  02 00 00 00 00 00 00 00                           ........
-g 19

AX=0010  BX=0008  CX=0000  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B73  ES=0B63  SS=0B73  CS=0B76  IP=0019   NV UP EI PL NZ NA PO NC
0B76:0019 B8004C        MOV     AX,4C00
-d ds:20 27
0B73:0020  02 04 06 08 0A 0C 0E 10                           ........
-
       

注:8位数据,同理使用al/ah,并存到c段中。
评论次数(0)  |  浏览次数(349)  |  类型(汇编语言) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码