前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >汇编语言篇——寻址方式

汇编语言篇——寻址方式

原创
作者头像
会洗碗的CV工程师
发布2023-11-30 23:52:37
1790
发布2023-11-30 23:52:37
举报
文章被收录于专栏:LongJava学习资料LongJava学习资料

实验目的和要求

1、熟悉并掌握CPU的寻址方式;

2、能灵活应用不同的寻址方式设计程序。

实验环境

Debug

实验内容及结果

实验内容

1、 将教材中所有讲解过的程序上机调试,用Debug 跟踪其执行过程,进一步理解不同的寻址方式。(以教材问题7.9的程序为例子:)

实验代码:

代码语言:javascript
复制
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
????dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
????db '1. display ?????'
????db '2. brows ???????'
????db '3. replace ?????'
????db '4. modify ??????'
datasg ends
codesg segment
start: mov ax,stacksg
?????????mov ss,ax
?????????mov sp,16
?????????mov ax,datasg
?????????mov ds,ax
?????????mov bx,0
?????????mov cx,4
??????s: push cx
?????????mov si,3
?????????mov cx,4
?????s0:mov al,[bx+si]
?????????and al,11011111b
?????????mov [bx+si],al
?????????inc si;
?????????loop s0
?????????pop cx
?????????add bx,10h
?????????loop s
?????????mov ax,4c00h
?????????int 21h
codesg ends
end start

运行结果:

3、寻址方式在结构化数据访问中的应用:

已定义好数据,编程,实现将data段中的数据按指定格式写入到table段中,并计算每年的人均收入(取整),结果也保存在相应的table段中。

data segment

year ??db '1975','1976','1977','1978','1979','1980', '1981','1982','1983'

……..

???db '1993','1994','1995'

;以上是表示年份的21个字符串

receipts dd 16,22,382,1356,2390,8000, 16000,24486,50065,97479,140417,197514

…….

;以上是表示21年公司总收入的21个dword型数据

staff_num dw 3,7,9,13,28,38,130,220,476,778,1001,1442

……….

;以上是表示21年公司雇员人数

data ends

table segment

???db 12 dup ('year summ ne ?? ') ?

table ends

table表格式如下:

实验代码

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

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

???????????mov bx,0

???????????mov si,0

???????????mov di,0

???????????mov cx,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[bx]

????????????mov dx,56h[bx]

????????????mov es:5h[di],ax

????????????mov es:7h[di],dx

????????????mov ax,0A8h[si]

????????????mov es:0Ah[di],ax

????????????mov ax,54h[bx]

????????????div word ptr ds:0A8h[si]

????????????mov es:0dh[di],ax

????????????add bx,4

????????????add si,2

????????????add di,16

????????????loop s

????????????mov ax,4c00h

????????????int 21h

codesg ends

end start

运行结果

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 实验目的和要求
  • 二 实验环境
  • 三 实验内容及结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com