1295110212 发表于 2016-6-15 14:39:53

课程设计1的半成品入注解

ssume cs:c,ds:d,es:t
d    segment
   db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985'
   db '1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
   dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827
   dd 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,11542,14430
   dw 15257,17800
d    ends
t    segment
   db 21 dup ('year summ ne ?? ')
t    ends
c    segment
s:mov ax,d
   mov ds,ax
   mov ax,t
   mov es,ax
   mov bp,0         ;变址寄存器置0.为第三数据项首地址EA      
   mov bx,00h         ;用BX定义结构型数据的开始数组地址。
   mov cx,21d         ;结构型数据的数组数。
s1:push cx            ;数组数入栈。
   mov cx,4         ;数组项的元素数。
   mov di,0         ;目地数组项元素的开绐地址EA置0.
s10:mov ax,0         ;AX置0.
   mov al,      ;源数组的数组项首元素送入AL。
   mov es:,al;把AL的内容送入目地数组的数组项的第一个内存单元。
   inc di             ;目地数组项的内存单元地址加1.
   inc si             ;源数组项的内存单元地址加1
   loop s10         ;判断数据项的元素数是否转送完。
s11:mov ax,    ;读源数组的第二数项据的第一元素。
   mov es:,ax   ;送入目地数据项
   mov ax,
   mov es:,ax
s12:mov ax,es:   ;
   mov dx,es:
   mov cx,ds:;把源数组的第三数据项的元素送入CX中作为除数。
   mov es:,cx
   div cx            
   mov es:,ax
   add bp,2h          ;源数组第三数据项的内存地址加2.
   add bx,10h         ;结构型数据的数组的EA加一个字的范围。
   pop cx             ;结构型数据的数组数出栈。
   loop s1            ;判断所有数组是否执行完即即;(CX=0),
         mov cx,15h   ;要显示的目地结构型数据的数组数目送入计数器。
         mov bp,0       ;源数组的数组首地址置0.
         mov bl,2
         mov bh,3       ;显示在哪一行哪一例置初值。

    cylc:push cx      ;数组数目数据入栈。
         push bx      ;当前哪行哪例入栈。
show_str:mov cx,0
         mov dh,bl
         mov dl,bh
         mov cl,2             ;字符串显示的寄存器入口参数。
         mov ax,0b800h
         mov ds,ax            ;显存的段地址。
         mov ax,0
         mov al,0a0h   
         mul dh         
         mov di,ax            ;计算显示在哪一行。
         mov al,2h
         mul dl      
         sub ax,2h            ;计算显示在哪一例。
         add di,ax            ;计算显示在哪一行哪一例。
         mov dl,cl            ;显示的字符属性。
         mov bx,0             ;显示数组的首地址EA置0.
         mov si,0             ;源数组数据项的首地址EA置0.
         mov cx,4             ;显示数组的第一数据项的元素数。
   dtoc1:mov al,es:[ bp+si]
         mov ah,0             ;读源数据项的元素。
         mov ,al
         mov ,dl   ;显存中写入字符入属性。
         inc bx
         inc bx               ;显存地址加2.
         inc si               ;数据项的元素地址加1.
         loop dtoc1            ;判断元素数.
         jmp short data2
   dtoc2:mov bx,20
         mov si,0
         mov dl,2h
         mov cl,
         mov ch,0
         mov ,al
         mov ,dl
         add bx,2
         inc si
         loop dtoc2
         jmp short a
         
   data2   mov bx,0         ;字符个数置0
         mov ax,es:
         mov dx,es:   ;读源数据项进行除法运算。
         mov cx,0ah         ;读源数据项进行除法运算。
         call divdw         
         mov cx,bx          ;字符数送入计数器。   
         mov bx,0         ;第二数据项的首地址置0.
         a:pop ax             ;第一个字符数据出栈。         
         mov ,al   ;转换后的字符数据送入中转区
         inc bx             ;中转区地址加1.
         loop a
         mov ax,0
         mov ,ax   ;中转区字符的最后内容置为0.
         jmp short dtoc2
         
   divdw:push ax            ;源数据项的低16位入栈。
         mov ax,dx
         mov dx,0
         div cx             ;源数据项的高16位除法。
         mov si,ax          ;除法的商送入SI。
         pop ax             ;源数据项的低16位出栈
         div cx             ;源数据项的低16位与高16位的余数除以除数的除法。
         mov cx,dx          ;第二次除法的余数送入CX。
         mov dx,si          ;第一次除法的商送入DX从而形成商在AXDX中,AX为商的低16位,DX
                              为商的高位。余数在CX中。
         add cx,30h         ;
         push cx            ;数值数据转换字符数据并入栈。
         inc bx               ;记录字符的个数。
         mov cx,ax            ;商送入CX
         inc cx
         loop divdw         ;判断商是否为0.
         ret
   
         
         
       a:add bp,10h         ;源结构型数组的数组项地址加一个字。
         pop bx               ;当前哪行哪例出栈,
         inc bl               ;显示哪一行的计数器加1.
         pop cx               ;数组数目数据出栈
         dec cx
         jcxz e
         jmp near ptr cylc

      
   e:mov ax,4c00h
   int 21h
c    ends
end s

哪吒三太子 发表于 2016-6-15 22:18:36

{:10_266:}{:10_266:}{:10_266:}

求生而学 发表于 2016-6-17 11:53:12

{:10_333:}

qwe1231069 发表于 2016-9-7 10:02:44

看着真不爽

独步凌波 发表于 2016-11-6 09:20:29

其实我写的比你还长,但是出现超出内存啦{:10_266:}{:10_266:}{:10_266:}
页: [1]
查看完整版本: 课程设计1的半成品入注解