《汇编语言》实验代码及详解(保姆级)
Posted Lzy_Gofaster
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《汇编语言》实验代码及详解(保姆级)相关的知识,希望对你有一定的参考价值。
汇编语言实验七完整代码
准备开发工具:notepad++(用来编写汇编代码)
DOSBOX(windows系统中用来运行和调试汇编代码的编译器,在VMware的虚拟机linux环境下也可以实现运行,这里不做演示)
Tips:此实验是目前为止汇编语言最复杂的实验代码及功能实现,汇编语言作为底层语言,在本实验中足以证明其魅力所在,程序本身一定要自己先动手写,以后一定还会涉及到该程序中的相关知识点,需要耐心且严谨。
下面是代码及详解:(notepad++中完成开发)
assume cs:codesg,ds:data,es:table
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'
;以上是表示21年的21个字符串
;db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1
dd 16,22,382,1356,2390,8000,16000,24486,50065,94749,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5973000
;以上是表示21年公司总收入的21个dword型数据
;dd定义双字类型变量,一个双字数据占4个字节单元,读完一个,偏移量加4
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,11430,45257,17800
;dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2
data ends ;表明数据段的结束,即为数据定义完成
table segment ;定义一个表格
db 21 dup('year summ ne ?? ') ;dup中的内容循环存储21次,是表格内容
table ends ;表格定义结束
codesg segment ;代表代码段开始
start:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax ;这里es是额外的寄存器,是用来存放table的数据,其功能和ds相似
mov bx,0
mov si,0
mov di,0 ;bx,ei,di在这里我们也都用来控制循环变量
mov cx,21 ;定义循环次数为21,因为有21年的数据
s: ;进入循环
mov al,[bx]
mov es:[di],al
mov al,[bx+1]
mov es:[di+1],al
mov al,[bx+2]
mov es:[di+2],al
mov al,[bx+3]
mov es:[di+3],al
;以上八行代码的作用是存放年份数据(只存放了一个数据,每两行存放一个数字,并且该数字是低位的)
mov ax,54h[si] ;收入的偏移为54h
mov es:5h[di],ax ;因为收入数据是紧挨着年份数据来存放的,所以这里要转到table中的时候要挨着上面的年份继续存放,所以收入数据在5h的地方开始继续存放在table中
mov dx,56h[si];因为数据类型是dd类型,所以我们将低位的数据存放在ax中,高位数据存放在dx中
mov es:7h[di],ax ;以此类推即可,高位数据存放在高位置
;以上四行代码的作用是存放年收入的数据
mov ax,0a8h[bx];偏移地址位0a8h
mov es:0Ah[di],ax
;以上两行代码的作用是存放雇员的数据
mov ax,54h[bx]
mov dx,56h[bx] ;以上两句是初始化被除数
div word ptr ds:0A8h[di] ;进行除法
mov es:0dh[di],ax
;以上代码的作用是计算平均收入
add si,4
add bx,2
add di,16;改变循环变量的值
loop s;循环终止
mov ax,4c00h
int 21h ;这两句代码代表程序结束,为stipulate
codesg ends
end start
在DOSBox中输入r指令进行查看寄存器内容:
实验七知识点总结:
一、数据定义
db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1
dd定义双字类型变量,一个双字数据占4个字节单元,读完一个,偏移量加4
dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2
二、DOSBOX运行指令汇总
以上是关于《汇编语言》实验代码及详解(保姆级)的主要内容,如果未能解决你的问题,请参考以下文章
13 万字 C 语言从入门到精通保姆级教程2021 年版 (建议收藏)