文章目录

  • 0x01. Hello, world
  • 0x02. 字母大小写转换
  • 0x03. 测试某数是否是正数
  • 0x04. 数组元素求和
  • 0x05. 统计一个数组中的奇数个数
  • 0x06. 判断正负数
  • 0x07. 1+2+3+·······+100
  • 0x08. 三个数排序
  • 0x09. 统计一个字符串中某个字符出现的次数
  • 0x10. 统计无符号数组中奇数的个数

0x01. Hello, world

不解释,直接上代码

SSEG SEGMENT STACKDB 16 DUP(?)
SSEG ENDS
DSEG SEGMENTHELLO DB 'Hello, world!','$'
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:MOV AX, DSEGMOV DS, AXMOV AH, 09H             ;调用09H号功能,输出显示字符串LEA DX, HELLOINT 21HMOV AH, 4CHINT 21HCSEG ENDS
END START

0x02. 字母大小写转换

题目:
编写程序,从键盘输入一个字符串,将其中的小写字母转换成大写后,再显示出来。

SSEG SEGMENT STACKDW 32 DUP(?)
SSEG ENDS
DSEG SEGMENTBUF DB 50,?,50 DUP(?)       ;定义字符串输入缓冲区,字符存储区最多50个字节
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:MOV AX,DSEGMOV DS,AXLEA DX,BUF              ;设置缓冲区首地址MOV AH,0AH              ;输入一个字符串,按回车键结束输入(光标回到当前行首)INT 21HLEA SI,BUF+2            ;取串首地址MOV CL,BUF+1            ;取串的实际长度MOV CH,0                ;CX作为循环计数器LTOU:MOV AL,[SI]             ;从串中取出一个字符CMP AL,61H              ;判断是否为小写英文字母JB NEXTCMP AL, 7AHJA NEXTSUB AL, 20H             ;将小写英文字母转换为对应的大写英文字母MOV [SI], AL            ;将转换后的字符存回原处NEXT:INC SILOOP LTOUMOV BYTE PTR [SI], '$'  ;在串的尾部加上'$'字符,用于字符串显示MOV AH, 02H             ;调用02H号功能,输出一个换行符,使光标移到下一行MOV DL, 0AHINT 21HMOV AH, 09H             ;显示字符串LEA DX, BUF+2           ;设置串首地址INT 21HMOV AH, 4CHINT 21HCSEG ENDS
END START

使用子程序实现

SSEG SEGMENT STACKDW 32 DUP(?)
SSEG ENDS
DSEG SEGMENTBUFF DB 50, ?, 50 DUP(?)              ;定义缓冲区
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:MOV AX, DSEGMOV DS, AXLEA DX, BUFF                ;取缓冲区首地址MOV AH, 0AH                 ;字符串输入功能号,0AHINT 21HLEA SI,BUFF+2               ;获取字符串首地址MOV CL,BUFF+1                ;获取字符串长度MOV CH,0CALL TOUPPERCASECALL PRINTMOV AH,4CHINT 21HTOUPPERCASE PROC
AGAIN:MOV AL,[SI]CMP AL,61HJB NEXTCMP AL,7AHJA NEXTSUB AL,20HMOV [SI],AL
NEXT:INC SILOOP AGAINMOV BYTE PTR [SI+BX], '$'               ;转换完成后,在字符串的末尾加上‘$’符号,方便接下来的打印RET
TOUPPERCASE ENDPPRINT PROCMOV AH, 02HMOV DL,0AHINT 21HMOV AH,09HLEA DX,BUFF+2INT 21HRET
PRINT ENDPCSEG ENDS
END START

0x03. 测试某数是否是正数

题目
编写完整的汇编语言源程序,测试某数(在数据段中定义)是否是正数。如该数是正数,则在屏幕上显示字符串“DATA is a posotive number!”,否则在屏幕上显示字符串“DATA is a negative number!”。

SSEG SEGMENT STACKDW 16 DUP(?)
SSEG ENDS
DSEG SEGMENTDATA DB 1MESSAGE1 DB 'DATA is a posotive number!','$'MESSAGE2 DB 'DATA is a negative number!','$'DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:MOV AX, DSEGMOV DS, AXMOV AL, DATASHL AL, 1JC  NEXTMOV AH, 09HLEA DX, MESSAGE1 INT 21H
NEXT:MOV AH, 09HLEA DX, MESSAGE2INT 21HMOV AH, 4CHINT 21HCSEG ENDS
END START

0x04. 数组元素求和

题目:
设在8086系统内存中,有一首地址为STR1有符号字节数组,共有10个数组元素。编写完整的汇编语言源程序实现以下功能。
要求:
(1)求出STR1数组中这10个元素的和,并存入到地址是COUNT单元中。
(2)在源程序中必须定义一个对数组求和的子程序。

SSEG SEGMENT STACKDB 32 DUP(?)
SSEG ENDS
DSEG SEGMENTSTR1 DB 1, -2, 3, -4, 5, -6, 7, -8, 9, 10       ;定义有符号数组STR1COUTN DW ?                                      ;COUNT 用于存放数组元素和
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:MOV AX, DSEGMOV DS, AXXOR AX, AX                                      ;将AX清零LEA SI, STR1                                    ;取STR1首地址MOV CX, 10CALL SUM                                        ;调用子程序MOV AH, 4CHINT 21H;;定义子程序;SUM PROCPUSH SI                                         ;保护现场PUSH CXXOR BX,BX                                       ;将BX清零
AGAIN:MOV AL, [SI]CBWADD BX,AX                                      ;求和,放到BXINC SILOOP AGAINMOV COUTN, BX                                   ;将求和后的结果放到COUNT中POP CX                                          ;恢复现场POP SIRET
SUM ENDPCSEG ENDS
END START

0x05. 统计一个数组中的奇数个数

题目:
给定一个数组,统计其中奇数的个数

SSEG SEGMENT STACKDB 16 DUP(?)
SSEG ENDS
DSEG SEGMENTARR DB 19, 28, 37, 46, 55, 64, 73, 82, 91, 100N = $-ARR               ;N代表数组长度COUNT DB 0
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:MOV AX, DSEGMOV DS, AXXOR AX, AX              ;清零MOV CX, NLEA SI, ARR             ;取数组首地址AGAIN:MOV AL, [SI]            ;逻辑右移指令格式:SHR DST, CNR  其中 DST不能为立即数或段寄存器,DST必须有明确的数据类型SHR AL, 1JNC NEXTINC COUNT;也可以使用下面的指令;MOV AL, [SI];TEST AL, 01H;JZ NEXT;INC COUNT
NEXT:INC SILOOP AGAINMOV AH, 4CHINT 21HCSEG ENDS
END START

0x06. 判断正负数

题目:
编写完整的汇编语言源程序,测试某数(在数据段中定义)是否是正数奇数。如该数是正数,则在屏幕上显示字符串“DAT is a posotive number!”,否则在屏幕上显示字符串“DAT is a negative number!”。

SSEG SEGMENT STACKDW 16 DUP(?)
SSEG ENDS
DSEG SEGMENTDATA DB 0A7HMESSAGE1 DB 'DATA is a posotive number!','$'MESSAGE2 DB 'DATA is a negative number!','$'DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:MOV AX, DSEGMOV DS, AXMOV AL, DATASHL AL, 1JC  NEXTMOV AH, 09HLEA DX, MESSAGE1 INT 21HJMP OK
NEXT:MOV AH, 09HLEA DX, MESSAGE2INT 21H
OK: MOV AH, 4CHINT 21HCSEG ENDS
END START

0x07. 1+2+3+·······+100

题目:
1到100的累加和

SSEG SEGMENT STACKDW 16 DUP(?)
SSEG ENDS
DSEG SEGMENTN DW 100COUNT DW 0
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START:MOV AX,DSEGMOV DS,AXMOV CX,NMOV AX,0MOV BX,1
SUM:ADD AX,BXINC BXLOOP SUMMOV COUNT, AXMOV AH,4CHINT 21HCSEG ENDS
END START

0x08. 三个数排序

题目:
设数据段内定义A、B、C三个无符号字节类型变量,编写指令序列,将这三个变量的值降序排列。

SSEG SEGMENT STACKDW 16 DUP(?)
SSEG ENDSDSEG SEGMENTA DB 12B DB 4C DB 8
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START:MOV AX,DSEGMOV DS,AXMOV AL,A CMP AL,BJAE A_CXCHG AL,BMOV A,AL
A_C:MOV AL,A CMP AL,CJAE B_CXCHG AL,CMOV A,AL
B_C:MOV AL,BCMP AL,CJAE OKXCHG AL,CMOV B,AL
OK:MOV AH,4CHINT 21HCSEG ENDS
END START

0x09. 统计一个字符串中某个字符出现的次数

题目:
设数据段内定义有一个长度为20个字符的字符串STR1。编写指令序列,统计该字符串中字母“e”出现的次数,并存入字节类型变量ENUM中。

SSEG SEGMENT STACKDW 16 DUP(?)
SSEG ENDSDSEG SEGMENTSTR1 DB "SEIkendeekkodeniieneineed"N=$-STR1COUNT DB 0
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START:MOV AX,DSEGMOV DS,AXMOV CX,NLEA SI,STR1AGAIN:MOV AL,[SI]CMP AL,'e'JNZ NEXTINC COUNTNEXT:INC SILOOP AGAINMOV AH,4CHINT 21H
CSEG ENDS
END START

0x10. 统计无符号数组中奇数的个数

题目:
给定一个数组,统计其中奇数的个数,存入到变量COUNT中
要求:
用到子程序

SSEG SEGMENT STACKDW 16 DUP(?)
SSEG ENDS
DSEG SEGMENTARR DB 1, 2, 3, 4, 5, 6, 7, 8N = $-ARRCOUNT DB ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:MOV AX,DSEGMOV DS,AXMOV CX,NLEA SI,ARR              ;取数组元素首地址XOR BX,BX               ;将BX寄存器清零CALL COUNTODDMOV AH,4CHINT 21HCOUNTODD PROCPUSH SI
AGAIN:MOV AL,[SI]MOV BL,01HTEST AL,BL              ;结果,0表示是偶数,1表示奇数JZ NEXTINC BH
NEXT:INC SILOOP AGAINMOV COUNT,BHPOP SIRETCOUNTODD ENDPCSEG ENDS
END START

汇编语言程序设计期末总结相关推荐

  1. 南邮《汇编语言程序设计》2018/2019 学年第一学期期末考试回忆

    2018.12.8 13:30-15:20 <汇编语言程序设计>考试 刚考完,回忆一下题目. 先总结一下:感觉考得还是蛮细的,主要自己复习时间也不多,全凭上学期学过一遍的记忆和笔记复习的. ...

  2. 汇编语言程序设计钱晓捷第五版期末复习参考

    汇编语言程序设计钱晓捷第五版期末复习参考 第一章:汇编语言基础知识 1.1 8086的寄存器 处理器内部需要高速存储单元,用于暂时存放程序执行过程中的代码和数据,这些存储单元被称为寄存器(Regist ...

  3. java语言程序设计期末复习综合练习题_Java语言程序设计期末复习综合练习题答案...

    Java语言程序设计期末复习综合练习题 一.选择题. 2. main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的( )? A.public stat ...

  4. c语言程序设计1试卷,(C语言程序设计期末试卷1.doc

    (C语言程序设计期末试卷1 <C语言程序设计>试卷1 (使用层次或专业: 计算机) 若程序题中预留的空白不够,在试卷最后一页背面答题,请标记相应的题号 题 次一二三四五六总分应得分2010 ...

  5. Intel汇编语言程序设计学习-第一章 基本概念

    第一章基本概念 1.1  简单介绍 本书着重讲述MS-Windows平台上IA-32(Intel Architecture 32bit,英特尔32位体系架构)兼容微处理器的汇编语言程序设计,可以使用I ...

  6. 3.2 汇编语言程序设计

    3.2 汇编语言程序设计 3.2.1 汇编语言格式 3.2.2 伪指令 3.2.3 顺序程序设计 3.2.4 分支程序设计 3.2.5 循环程序设计 3.2.6 子程序 3.2.1 汇编语言格式 3. ...

  7. python程序设计试卷_2013Python程序设计期末试卷A

    2013Python程序设计期末试卷A (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 程序设计思想与方法 第 1 页 共 10 ...

  8. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——自编解析与答案

    <IBM-PC汇编语言程序设计>(第2版)[沈美明 温冬婵]--第一章--自编解析与答案 <IBM-PC汇编语言程序设计>(第2版)[沈美明 温冬婵]--第二章--自编解析与答 ...

  9. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】答案

    内容修订.解析.扩展: <IBM-PC汇编语言程序设计>(第2版)[沈美明 温冬婵]--自编解析与答案 第 一 章. 习 题 1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数 ...

最新文章

  1. Nginx反代Mogilefs分布式储存示例
  2. 『ACM-算法-ST算法』信息竞赛进阶指南--区间最值问题的ST算法
  3. .NET Core简介
  4. 这绝对是有史以来最详细的web前端学习路线
  5. csv python 图片 存_Python读取CSV文件并存储到MySQL
  6. 买iPhone将可能只有盒子了?网友:库克账号多少,我直接打钱吧?
  7. 一部分 数据 迁移_11项最佳实践,每次数据中心迁移都必不可少
  8. 页面响应式布局时,网页图片不缩放
  9. 关于静态博客的评论系统
  10. 【亲测可用】win7下移动硬盘无法访问,拒绝访问位置不可用时的解决方案!
  11. 无线桥接与中继的区别
  12. dlib php,图片人脸检测——Dlib版(四)
  13. 【实战案例】分享6种常用的信用卡欺诈检测算法(附 Python 代码)
  14. 在js中调用微信的扫描二维码功能
  15. Python+Appium【第三章】Adb元素定位
  16. 成为无可替代,从提升自己的贡献开始!
  17. Java毕设项目中学后勤设备保修维护管理系统计算机(附源码+系统+数据库+LW)
  18. 非常难得的iPad版房地产售楼助手应用源码项目
  19. 203日语计算机考研学校,2019年考研日语大纲公布:203公共日语备考建议
  20. 对文件进行加密和解密

热门文章

  1. 企查查爬取返回405错误的一种处理方法
  2. rabbitmq入门(四)Topics主题模式
  3. 墨菲安全受邀与腾讯安全共话软件供应链安全治理
  4. 我是马云:新入职员工勿批判公司
  5. 微信小程序----布局适配与物理逻辑像素
  6. 计算机核心基础、计算机硬件组成原理、计算机硬件组成详解、硬盘接口及操作系统、计算机网络简述、OSI七层协议、子网划分、 VLAN简述
  7. USB 协议 (五) 枚举
  8. 微信黑名单已经删除的人怎么找回来?这些步骤挨个试试!
  9. Dell 灵越7370 装机过程遇到硬盘枷锁 bitlocker锁解决方法
  10. QA——性能优化(一)