王爽汇编第二版第8章实验7

来源:互联网 发布:红蜘蛛软件怎么卸载 编辑:程序博客网 时间:2024/05/17 21:59

数据处理的两个基本问题

1.处理的数据在什么地方

2.处理的数据有多长

寄存器:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di

段寄存器:ds,cs,ss,es

bx、bp、si、di在【...】中,只能以4种组合出现:bx+si、bx+di、bp+si、bp+di

si 和 di 不能同时出现在一个【】中,bx和bp一样

使用寄存器bp时,只要没有显性地给出段地址,段地址就默认在ss中

bp  -------------->ss

bx----------------->ds

显性给出段地址,例如

ds:[bp + 6]         添加段前缀

push和pop指令只进行字操作

div指令

被除数       除数      商     余数

16/ax            8          8/al     8/ah

32/ax+dx      16        16/ax      16/dx


db   重复的次数    dup(重复的db型数据)

assume cs:code

data segment
    db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
    db '1993','1994','1995'
    
    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    
    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    dw 11542,14430,15257,17800
data ends

table segment
    db 21 dup ('year summ ne ?? ')
table ends

code segment
start:
    mov ax,data
    mov ds,ax
    mov bx,0
    mov bp,0a8h
    
    mov ax,table
    mov es,ax
    mov di,0
    
    mov cx,21
    s:    push cx
        mov cx,4
        mov si,0
        s1:    mov al,ds:[bx+si]
            mov es:[di],al
            inc di
            inc si
            loop s1
        inc di
        mov ax,ds:[bx + 054h]
        mov dx,ds:[bx + 054h + 2]
        mov es:[di],ax
        add di,2
        mov es:[di],dx
        add di,3
        
        mov cx,ds:[bp]
        mov es:[di],cx
        add di,3
        
        div cx
        mov es:[di],ax
        add di,3
        
        add bx,4
        add bp,2
        pop cx
        loop s
    mov ax,4c00h
    int 21h
code ends
end start

结果如图




0 0