当前位置: 首页 > news >正文

微机原理复习总结6:汇编语言程序设计

本篇博客主要分享几道汇编语言例题

  1. 编写一完整的程序,从键盘输入一组字符,直到输入“0”为止,当输入是小写字母时,则修改为大写字母,输入的字符存放在string为首址的存储单元中。

data        segment    ;数据段定义
string  db  100 dup(?)
data      ends
code     segment    
assume  cs:code,ds:data    ;定义寄存器与段关系
start:    
mov  ax,data
mov  ds,ax
mov  di,offset string
again:          ;again定义
mov  ah,1       ;1->ah
int  21h
cmp  al,'0'   ;比较al,'0'
je  exit       ;二者相等,转到exit
cmp  al,'a'    ;比较al,'a'
jb  next       ;al<'a',转到next
cmp  al,'z'    ;比较al,'a'
ja  next       ;al>'z',转到next
sub  al,20h    ;al=al-20h(大小写转化)
next:         ;next定义
mov  [di],al
inc  di        ;di=di-1
jmp  again     ;跳转again
exit:         ;exit定义
mov  ah,4ch
int  21h
code     ends
end  start
  1. 设内存缓冲区SOURCE中有100个字节数据99H,编写一完整的程序,将它传送到TARGET开始的存储单元中。

data   segment
source   db  100   dup  (99h)
target   db  100   dup  (?)
data   ends
code   segmentassume  cs:code, ds:data, es:data
start :mov   ax, datamov   ds, axmov   es, axmov   si, offset  sourcemov   di, offset  targetmov   cx, 100cldrep  movsb mov    ah,  4chint    21h
code   endsend start

3.设内存缓冲区BUF中存有50个字符,编写一完整的程序,统计数字字符的个数,将结果保存在N_DIGIT单元,其他类型字符个数保存在N_OTHER单元。(10分)。

提示:数据结构定义如下:

DATA SEGMENT

BUF DB ‘AJUuiy898@#EWDFyuii*&^9807jk...’; 共50个字符

N_DIGIT DB ? ;保存字符串中数字字符个数

N_OTHER DB ? ;保存其他类型字符个数

DATA ENDS

DATA    SEGMENTBUF   DB ‘AJUuiy898@#EWDFyuii*&^9807jk...’; 共50个字符
N_DIGIT  DB  ? ;保存字符串中数字字符个数
N_OTHER  DB  ? ;保存其他类型字符个数
DATA    ENDScode   segmentassume  cs:code, ds:data,
start :mov   ax, datamov   ds, axmov  cx,50  ;cx保存字符串长度lea  si,buf   ;指向第一个字符
countchar:mov  al,[si]
cmp  al,30h
jb  other
cmp  al,39h
ja  other
inc  N_DIGIT
jmp  continue
other:inc  N_OTHER
continue:
inc siloop countchar
mov    ah,  4chint    21hcode   ends
end start

4、编程将存放在HEXN中的一位十六进制数转换为ASCII码,并存入ASCN中。数据段如下:(10分)

DATA SEGMENT

HEXN DB

ASCN DB ?

DATA ENDS

DATA    SEGMENT
HEXN  DB  ?
ASCN  DB  ?
DATA    ENDS
CODE    SEGMENT
ASSUME   CS:CODE,DS:DATA 
START:   MOV    AX,DATAMOV    DS,AXMOV    AL,HEXNCMP    AL,9           JBE    LP1ADD AL,7LP1:ADD  AL,30HMOV  ASCN,ALMOV  AH,4CHINT    21H
CODE       ENDSEND     START

5.设内存缓冲区BUF中存有100个字符,写一个子程序,统计BUF中大写字符、小写字符个数,将结果分别保存在N_CHAR1、N_CHAR2单元。(10分)。提示:数据结构定义如下:

DATA SEGMENT

BUF DB ‘AJUuiy898@#EWDFyuii*&^9807jk...’; 共100个字符

N_CHAR1 DB ? ;保存字符串中大写字符个数

N_CHAR2 DB ? ;保存字符串中小写字符个数

DATA ENDS

p1 proc far
push cx
push sipush axmov cx,100  ;cx保存字符串长度lea si,buf  ;指向第一个字符
countchar:mov al,[si]cmp al,’A'
jb continuecmp al,’Z’ja n_charinc  byte ptr [N_CHAR1]jmp continue
n_char:cmp al,’a’jb continuecmp al,’z’ja continueinc  byte ptr [N_CHAR2]
continue:
inc siloop countcharpop axpop sipop cxret
p1 endp
http://www.lryc.cn/news/15539.html

相关文章:

  • 计算机网络 部分原理和过程
  • C++实现链表
  • MySQL索引篇
  • Ardiuno-交通灯
  • Leetcode.1234 替换子串得到平衡字符串
  • 聚类算法之K-means算法详解
  • 电话呼入/呼出CSFB流程介绍
  • 【比赛合集】9场可报名的「创新应用」、「程序设计」大奖赛,任君挑选!
  • 剑指 Offer 27. 二叉树的镜像
  • RPC编程:RPC概述和架构演变
  • 神经网络训练时只对指定的边更新参数
  • Python列表list操作-遍历、查找、增加、删除、修改、排序
  • Python开发-学生管理系统
  • 大数据处理 - Trie树/数据库/倒排索引
  • jjava企业级开发-01
  • 「事务一致性」事务afterCommit
  • 【深度学习编译器系列】2. 深度学习编译器的通用设计架构
  • 图解操作系统
  • 【发版或上线项目保姆级心得】
  • Python数据分析-pandas库入门
  • MacBook Pro 恢复出厂设置
  • googletest 笔记
  • MySQL修改密码的几种方式?
  • 关于画一个句号--基于2022年终总结的反思与分享
  • 学习Flask之三、模板
  • 2023-02-20干活小计:
  • LeetCode_动态规划_困难_1326.灌溉花园的最少水龙头数目
  • mac tcpdump学习
  • 【跟我一起读《视觉惯性SLAM理论与源码解析》】第二章 编程及编译工具
  • 广东望京卡牌科技有限公司,2023年团建活动圆满举行