汇编语言王爽第五部分(数据处理)

汇编数组

将datasg中的第一个字符串转为大写,将第二个字符串转为小写

assume cs:code,ds:datasg

datasg segment
 db 'BaSic'
 db 'MinIx'
datasg ends

codesg segment
start:
 mov ax,datasg
 mov ds,ax
 mov bx,0
 
 mov cx,5
 s:
 mov al,[bx+0]
 and al,11011111b;与
 mov [bx+0],al
 mov al,[bx+5]
 or al,00100000b;或
 mov [bx+5],al
 inc bx
 loop s
 mov ax,4c00h
 int 21h
codesg ends
end start


第一个字符串地址是从段地址为ds,偏移地址为0开始的5个字节
第二个字符串地址是从段地址为ds,偏移地址为5开始的5个字节
在这里插入图片描述
将第六位取0是大写字母
将第六位取1是小写字母
与C语言的数组类似
C语言a[i],b[i]
汇编语言:[bx+0],[bx+5]或者0[bx],5[bx]

汇编结构体

编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存到table段中
在这里插入图片描述
代码初始化
首先初始化栈段,数据段,table段

assume cs:code,ss:stacksg,ds:datasg,es:table

stacksg segment
  db 16 dup(0)
stacksg ends

datasg segment
  a db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
  db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
  db '1993','1994','1995'


 
  b dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000
  dd 5937000


  c dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226

  dw 11542,14430,15257,17800

datasg ends

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

初始化DS,SS,SP

 mov ax,datasg
 mov ds,ax

 mov ax,stacksg
 mov ss,ax
 mov sp,16

 mov ax,table
 mov es,ax

因为懒得数数,所以在datasg数据前面用了a,b,c标识符
下面是将数据复制到table段行地址0-3和5-8

 mov si,0
 mov bx,0
 mov di,0
 mov cx,21
s:
 mov si,0
 push cx
 mov cx,4
 s0:
 mov al,a[di]
 mov es:[bx+si],al;复制到table段
 mov al,[offset b+di]
 mov es:[bx+si+5],al;复制到table段
 inc di
 inc si
 loop s0
 add bx,10h
 pop cx
loop s

只要知道这个原理,其他的都一样
与C语言的结构体类似
typedef struct
{
char Year[4];
char NO_Data;
unsigned int sunm
char NO_Data;
unsigned short People
char NO_Data;
unsigned short People_AVR
char NO_Data;
}company

定义21个company
company Mycompany[21]
原理:获得数据的首地址然后用si,di,或者bx进行偏移.
比如要访问Mycompany[10]中的sunm的第三个元素,可以把bx设置为16*10,sunm偏移了6个字节,si为0-3,分别表示sunm的1-4位,一个Mycompany大小为16个字节,所以可以表示为[bx+si+5].

点击获取完整代码

发布了8 篇原创文章 · 获赞 0 · 访问量 94

猜你喜欢

转载自blog.csdn.net/qq_41955402/article/details/104260990
今日推荐