花了些时间琢磨如何合理的分开子函数和主函数的功能最后把代码从两百多行减少到了170来行
assume cs:code
data segment
d1 db 5,10,00001010b
d2 dw 0,2,0
d3 db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
d4 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
d5 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11542,14430,15257,17800
data ends
stack segment
db 32 dup(0)
stack ends
code segment
start:
mov ax,data ;将地址寄存器指向数据段
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,32 ;初始化栈
call initial ;初始化表格行列指针
mov di,ds:[3]
mov cx,21
mov bx,offset d3 ;数据段偏移地址设置到d3段开头
mov ah,0
mov dx,0
years:
push cx
push bx
mov cx,4
add bx,4
year:
dec bx
mov al,ds:[bx]
push ax

这篇博客记录了作者在学习王爽《汇编语言》第三版第十章课程设计时的实践过程。通过代码重构,将原本的两百多行代码优化至170行。博客详细展示了如何初始化表格、显示数据以及实现十进制转换和除法运算的子程序,涉及数据段定义、栈初始化和内存管理等内容。
最低0.47元/天 解锁文章
1101

被折叠的 条评论
为什么被折叠?



