第8章的实验,分享一下。。。
assume cs:codesg,ss:stack,ds:datadata segment
db '1975','1976','1977','1978','1979','1980','1981'
db '1982','1983','1984','1985','1986','1987','1988'
db '1989','1990','1991','1992','1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479
dd 140417,197514,345980,590827,803530,1183000,1843000
dd 2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258
dw 2793,4037,5635,8226,11542,14430,15257,17800
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
codesg segment
start: mov ax, data
mov ds, ax ;数据段寄存器
mov ax, table
mov es, ax ;table段寄存器
mov ax, stack
mov ss, ax
mov sp, 16 ;设置桟段指针
mov bx, 0 ;bx为年份指针,初始时指向年份起始地址
mov bp, 0 ;bp为table段基址寄存器
mov si, 84 ;si是收入指针,初始时指向收入起始地址
mov di, 168 ;di是人数指针,初始时指向人数起始地址
mov cx, 21 ;cx中存放循环次数
s: push cx ;计数值压栈
mov ax,
mov es:, ax
add bx, 2
mov ax,
mov es:, ax ;处理年份
add bx, 2
mov ax, ;这里特意让收入的低8位通过ax传送,是为了后面算平均收入作准备
mov es:, ax
add si, 2
mov dx, ;这里特意让收入的高8位通过dx传送,是为了后面算平均收入作准备
mov es:, dx ;搬移收入
add si, 2
mov cx, ;人数通过cx传送,也是为后面算平均收入作准备
mov es:, cx ;搬移人数部分
add di, 2
div cx ;前面准备工作都做好了,只要div cx就算出了平均收入
mov es:, ax ;把商送入指定单元
add bp, 16 ;处理下一个年份的内容
pop cx ;计数数值出栈到cx中
loop s
mov ax, 4c00h
int 21h
codesg ends
end start 沙发。。。表示我只学到了第五章。 哦不。。是看到了第五章。。。还有很多还是学不明白。 话说为什么都不讲 od所显示的 eax ebx 多了个e呢? 这是什么区别 ArcherJhon 发表于 2011-11-13 23:49 static/image/common/back.gif
哦不。。是看到了第五章。。。还有很多还是学不明白。 话说为什么都不讲 od所显示的 eax ebx 多了个e呢? 这 ...
EAX 是32位寄存器
AX 是16为寄存器
为什么不讲,问问!小甲鱼大爷!你的知道了;P 嘿嘿, 学到 课程实验一 就难了。 关键是感觉 发表于 2011-11-13 23:59 static/image/common/back.gif
EAX 是32位寄存器
AX 是16为寄存器
为什么不讲,问问!小甲鱼大爷!你的知道了
呃。好的 谢谢您 学得真快撒。。 自己专业也有好多课,都忙不过来了 在学校,两个月没学了,看了这例子,差不多复习好了。
页:
[1]