lichun 发表于 2019-12-29 00:32:37

刚刚完成的实验七

本帖最后由 lichun 于 2019-12-29 00:36 编辑

第一次不看视频提示自己完成的程序
assume cs:codesg

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

stack segment
         dw 0
stack ends

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

codesg segment

start:    mov ax,data
         mov ds,ax
           mov ax,stack
           mov ss,ax
           mov ax,table
           mov es,ax
           mov bx,0
           mov si,0
           mov di,0
           mov sp,2
           mov bp,0
           mov cx,21
s0:      push cx
          mov ax,
           mov es:,ax
           mov ax,
           mov es:,ax
           mov dx,
           mov es:,dx
           div word ptr es:
           mov es:,ax
           mov cx,4

s:      mov al,
         mov es:,al
           inc si
           inc di
           loop s
          
           add bx,2
           mov si,bx
           add bp,16
           mov di,0
           pop cx
           loop s0
          
           mov ax,4c00h
           int 21h

codesg ends
end start

LinuxDeepin 发表于 2020-1-4 17:20:03

看明白了,先复制雇员人数到表格雇员人数存放地址处
然后复制总收入到除法运算相关的寄存器中
顺便将被总收入复制到表格收入的存放地址

使用除法指令,指定寻址的数据作为除数,指向进行除法运算。
结果商复制到表格处

其次年份字符串,单字节复制到表格处,循环四次

使用bx寄存器指向下一位收入、雇员人数地址
使用bx寄存器配合si寄存器,指向下一位年份字符串起始地址
使用bp寄存器指向表格下一行地址
di寄存器清零,重新指向年份字符串首位
循环21次
页: [1]
查看完整版本: 刚刚完成的实验七