微机原理(汇编语言)学习
创始人
2024-02-22 06:08:27

编程题A-1:在数组字变量ARRAY中有10个数,将数组中这10个数求和,放到RESULT存储区中。

DATA SEGMENTARRAY DW 1H,1H,1H,1H,1H,1H,1H,1H,1H,1H  ;存10个字在ARRAY中COUNT EQU ($-ARRAY)/2	;获得ARRAY中元素个数RESULT DW ?	;存最终结果
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS,DATA
START:MOV AX,DATAMOV DS,AXMOV AX,0	;用来临时存储求和结果MOV CX,COUNT	;循环条件LEA BX,[ARRAY]	;将ARRAY首地址存BX
LOP:ADD AX,[BX]	;求和ADD BX,2	;跳过一个字LOOP LOP	;CX!=0继续循环 CX=CX-1MOV RESULT,AX	;存最终结果MOV AH,4CH	;DOS功能调用结束程序INT 21H
CODE ENDSEND START

注:DX可能有其他用途,会一直变化,不太清楚


编程题A-2:已知有多个元素(不少于10个)存放在以BUF为首址的字节存储区中,试找出其中第一个负数放到BUFF字节存储区。

DATA SEGMENTBUF DB 5,6,2,6,-6,3,1,5,2,-2 ;初始化数据COUNT EQU $-BUF	;获取数据个数BUFF DB 0	;存最终结果
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA
START:MOV AX,DATAMOV DS,AXMOV AX,0	;存当前要判断的数LEA BX,[BUF]   ;存首地址MOV CX,COUNT 	;循环条件
LOP:   MOV AL,[BX]CMP AL,0JL  NEXT	;小于就跳转储存结束INC BXLOOP LOPNEXT:MOV BUFF,ALMOV AH,4CHINT 21HCODE ENDSEND START

注意:1.数据都是字节类型,所以要用AL第八位来存
2.比较大于小于0要用有符号数比较


编程题A-3:设有三个字节变量X、Y、Z,试找出X、Y有符号数中较大者送入Z中,编写程序。

DATA SEGMENTX   DB  5HY   DB  0AHZ   DB  4H
DATA ENDS
CODE SEGMENTASSUME  CS:CODE,DS:DATA
START:MOV AX,DATAMOV DS,AXMOV AL,XMOV BL,YMOV CL,ZCMP AL,BL ;X和Y比较JG  FIRST	;X大跳转CMP BL,CL	;X小,Y和Z比较JG  SECOND	;Y大跳转,如果Y小 Z最大MOV AH,4CHINT 21HFIRST:CMP AL,CL	;X和Z比较JG  THIRD	;X大跳转MOV AH,4CHINT 21HSECOND:MOV Z,BL ;将最大的Y存在Z里MOV AH,4CHINT 21HTHIRD:MOV Z,AL	;将最大的X存在Z里MOV AH,4CHINT 21HCODE ENDSEND START

注:1. CMP不能用变量进行比较
2. 变量间不能直接 MOV


编程题A-4:设在变量单元A、B和C中存放有三个数,若三个数都不为0,则求出三个数之和存入D中;若有一个为0,则将其他两个单元也清零,编写程序。

DATA   SEGMENTA   DB  5HB   DB  5HC   DB  0AHD   DB  0
DATA    ENDS
CODE   SEGMENTASSUME  CS:CODE,DS:DATA
START:;思路:分别将A,B,C中的数存到AL中,然后和0比较,如果是0就跳转清零,	;如果不是0就加到BL中,最后将BL结果中的数存到变量D中,DOS命令结束MOV AX,DATAMOV DS,AXMOV AL,AMOV BL,0CMP AL,0JZ  ZEROADC BL,ALMOV AL,BCMP AL,0JZ  ZEROADC BL,ALMOV AL,CJZ  ZEROADC BL,ALMOV D,BLMOV AH,4CHINT 21HZERO:MOV A,ALMOV B,ALMOV C,ALMOV AH,4CHINT 21HCODE    ENDSEND START

注:MOV 可以将存储器中的数移到变量里,不能变量直接移动。


编程题B-1:已知以BUF为首址的字存储区中存放着多个有符号的二进制数,试编写程序,将正数送以BUF1为首址的字存储区中,将负数数送以BUF2为首址的字存储区中。

DATA    SEGMENTBUF DW  0A235H,0AH,31H,0A263H,22H,51H,0CAH,8211H,0E3H,3HCOUNT   EQU ($-BUF)/2BUF1    DW  10  DUP(0)BUF2    DW  10  DUP(0)
DATA    ENDS
CODE    SEGMENTASSUME  CS:CODE,DS,DATA
START:;思路通过遍历BUF中的每个数,如果大于等于0就存到BUF1中,如果小于0就存到BUF2中MOV AX,DATAMOV DS,AXMOV CX,COUNTLEA SI,BUF1LEA DI,BUF2LEA BX,BUF
LOP:    MOV AX,[BX]ADD BX,2CMP AX,0JGE XMOV [DI],AXADD DI,2LOOP LOPMOV AH,4CHINT 21H
X:  MOV [SI],AXADD SI,2LOOP LOPMOV AH,4CHINT 21H
CODE    ENDSEND START

注1. 这里需要用到串指令,利用SI和DI可以获取串地址,并且利用MOV来向串里存数
2.需要利用DUP先开辟一块内存空间用来存数


编写程序,将一个包含20个元素的数组STRING分成一个偶数数组STRING1和一个奇数数组STRING2。

DATA    SEGMENTSTRING  DB  2,6,12,6,4,2,7,4,8,2,6,8,45,8,2,4,2,3,6,5COUNT   EQU $-STRINGSTRING1 DB  20  DUP(0)STRING2 DB  20  DUP(0)
DATA    ENDS
CODE    SEGMENTASSUME  CS:CODE,DS,DATA
START: ;思路:循环变量STRING数组,如果是偶数存在S1里,如果是奇数存在S2里MOV AX,DATAMOV DS,AXMOV CX,COUNTLEA BX,STRINGLEA SI,STRING1LEA DI,STRING2
LOP:MOV AL,[BX]SHR AL,1JC  JIMOV AL,[BX]MOV [SI],ALINC SIINC BXLOOP LOPMOV AH,4CHINT 21HJI:         MOV AL,[BX]MOV [DI],ALINC DIINC BXLOOP LOPMOV AH,4CHINT 21HCODE    ENDSEND START

将AL右移然后判断后不能直接将AL存到数组里,因为值变化了,所以需要将STRING里面的数重新赋值给AL后再存到数组里


编程题B-3:在以BUF为首址的字节单元中存放了COUNT个有符号数,编写程序找出其中最大数送MAX单元,最小数放入MIN单元。

DATA    SEGMENTBUF DB  5,2,6,4,2,1,5,-3,-5COUNT   EQU $-BUF                       MAX DB  0          MIN DB  0
DATA    ENDS
CODE    SEGMENTASSUME  CS:CODE,DS,DATA     
START:MOV AX,DATAMOV DS,AXLEA BX,BUFMOV CX,COUNT-1MOV AL,[BX]MOV MIN,ALMOV MAX,ALINC BX
LOP:MOV AL,[BX]CMP MIN,ALJG  XCMP MAX,AHJL  Y
Z:  INC BXLOOP LOP
NEXT:MOV AH,4CHINT 21H    X:  MOV AL,[BX]MOV MIN,ALJMP ZY:MOV AH,[BX]MOV MAX,AHJMP ZCODE    ENDSEND START

注意:有符号数比较大小,如果是十六进制,数值大不一定大,因为他可能是负数。


编程题C-1:已知在以BUF为首地址的字节存储区中,存放着一个以′$′作结束标志的字符串,试编写程序,将其中的大写字母转换成小写字母存放在新字符串NEWBUF,并将原字符串与新字符串都在屏幕上显示出来 。

DATA    SEGMENTBUF DB  'HeLlO,WoRlD!$'COUNT EQU   $-BUFNEWBUF  DB  20  DUP(0)
DATA    ENDS
CODE    SEGMENTASSUME  CS:CODE,DS:DATA;思路:通过遍历字符串,碰到大写就转换为小写,存到新串,涉及到串操作,最后利用09号DOS命令配合DX输出字符串
START:MOV AX,DATAMOV DS,AXLEA BX,[BUF]MOV CX,COUNTLEA DI,[NEWBUF]
LOP:    MOV AL,[BX]CMP AL,41HJAE XMOV [DI],ALINC DIINC BXLOOP LOPLEA DX,BUFMOV AH,09HINT 21HMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HLEA DX,NEWBUFMOV AH,09HINT 21HMOV AH,4CHINT 21HX:  CMP AL,5AHJBE YMOV [DI],ALINC DIINC BXLOOP LOPY:  ADD AL,20HMOV [DI],ALINC DIINC BXLOOP LOPCODE    ENDSEND START

注意:1.想回车用02号DOS命令既要输出回车,也要输出换行
2.09号DOS命令输出字符串,要将字符串先保存在DX中
3.字符串需要以$结尾


编程题C-2:已知在以BUF为首地址的字节存储区中存放一个有NUMBER长度的字符串,试编写程序,将其中非字母字符用空格代替,存放到新字符串STR中,并将原字符串与新字符串都在屏幕上显示出来 。

DATA    SEGMENTBUF DB  'Hello,World!$'NUMBER  EQU $-BUFSTR DB    DUP(0)
DATA    ENDS
CODE    SEGMENTASSUME  CS:CODE,DS:DATA
START:MOV AX,DATAMOV DS,AXLEA DI,STRLEA BX,BUFMOV CX,NUMBER-1
LOP:    MOV AL,[BX]CMP AL,41HJB  NEXTCMP AL,7AHJA  NEXTCMP AL,5AHJBE NEXT2CMP AL,61HJAE NEXT2
NEXT:MOV [DI],20HINC DIINC BXLOOP LOPMOV AL,'$'MOV [DI],ALLEA DX,BUFMOV AH,09HINT 21HMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HLEA DX,STRMOV AH,09HINT 21HMOV AH,4CHINT 21HNEXT2:MOV [DI],ALINC DIINC BXLOOP LOPCODE    ENDSEND START

注:1.字符串复制最后要查看STR结尾有没有$,没有将打印不出来


编程题C-3:已知在以BUF为首地址的字节存储区中存放着一个长度为15的字符串,编写程序,将字符串显示出来,并测试字符串中是否有数字符号,若有,则在屏幕上显示“yes”,否则显示“no”。

DATA SEGMENTBUF DB 'Hello,World!JXY$'COUNT EQU $-BUFSTR1 DB 'yes$'STR2 DB 'no$'
DATA ENDS
CODE    SEGMENTASSUME  CS:CODE,DS:DATA
START:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA BX,BUFMOV CX,COUNTMOV AH,0
LOP:MOV AL,[BX]INC BXCMP AL,30HJB  XCMP AL,39HJA  XMOV AH,1
NEXT:AND AH,1JZ  YLEA DX,STR1MOV AH,09HINT 21HMOV AH,4CHINT 21HY:  LEA DX,STR2MOV AH,09HINT 21HMOV AH,4CHINT 21H
X:  LOOP LOPJMP NEXTCODE    ENDSEND START

注:1. MOV AX,DATA MOV DS,AX 没写会乱码
2. 字符串变量结尾要加$

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...