微机实验第一章:汇编程序的建立和简单的顺序结构汇编程序设计(B站)

这篇具有很好参考价值的文章主要介绍了微机实验第一章:汇编程序的建立和简单的顺序结构汇编程序设计(B站)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

作为一名在校大学生,我将近期所学的知识进行总结。
一年之后我再看这些代码,我发现这些代码对于初学者十分友好。因此,我将这些代码分享给大家,希望大家能有所收获。如有不足,欢迎交流。

推荐可以看这位B站up主的视频学习汇编

B站up主

提示:以下是本篇文章正文内容,下面案例可供参考

一、拆字程序

题目要求

例如:单元data的内容为27H,将其高、低两位拆出后,分别存放到dataH和dataL中。编写程序,执行后,dataL 的内容应为低位07H,dataH的内容应为高位02H。

程序代码和运行结果

1.1代码如下(示例):

; multi-segment executable file template.

data segment   
     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    var DB 27H
    varL DB 00H
    varH DB 00H
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ends

code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    MOV AL,var    ;取变量的低4位
    AND AL,0FH
    MOV varL,AL   
    
    MOV AH,var     ;取变量的高四位
    AND AH,0F0H    ;不能以字母直接开头,要加0 
    SHR AH,4       ;右移四位,不然 varH 就变成02H
    MOV varH,AH
   
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends

end start ; set entry point and stop the assembler.

1.1运行结果

简单汇编程序,emu8086,单片机,51单片机,arm开发

二、拼字程序

题目要求

例如:将两个地址单元dataH和dataL中存放的数字,理解为一个两位16进制数的高、低

位,通过拼字,将其组装为一个数。并存入data中。

dataL的内容为低位07H,dataH的内容为高位02H,单元data用于存放拼字的结果,编程执行效果,应在data单元中存储数据27H。

程序代码和运行结果

1.2程序代码

; multi-segment executable file template.

data segment    
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
    varL DB 07H
    varH DB 02H
    var DB 0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
ends



code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;    

    MOV AL,varL  
    MOV var,AL    ;将低位数据的值赋值var
    
    MOV AL,varH   ;将高位数据的值赋值var
    SHL AL,4      ;将低四位数字移到高四位
    ADD var,AL
                                                      
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                                    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends

end start ; set entry point and stop the assembler.

1.2运行截图
简单汇编程序,emu8086,单片机,51单片机,arm开发

三、计算表达式

题目要求

编写程序实现 W=((B1+B2-B3)/B4*B5)2 , Bi为字节型变量,W为双字变量,不考虑溢出问题。

程序代码和运行结果

1.3程序代码

; multi-segment executable file template.

data segment
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;   
B1 DB 12H
B2 DB 1CH
B3 DB 1FH
B4 DB 03H
B5 DB 4AH
W  DD ?     ;题目要改成双字


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ends

code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;     

    MOV AL,B1
    ADD AL,B2
    SUB AL,B3   ;AL=B1+B2-B3   
    
    XOR AH,AH   ;AH清0 因为被除数要放入AH中 
    DIV B4      ;默认被除数是在AX当中的   
    ;除数在B4   结果:商在AL   余数在AH中
    
    MUL B5      ;字节*字节 ==;结果为字   就要按照字的乘法进行处理   
    MUL AX      ;( (B1+B2-B3) /B4*B5 )^2   
    
    MOV W,AX      ;存放低字节
    MOV W+2,,DX   ;存放高字节

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends

end start ; set entry point and stop the assembler.

1.3运行结果

简单汇编程序,emu8086,单片机,51单片机,arm开发

四、计算表达式

题目要求

已知当前数据段中有一个十进制数字0-9的7段代码表,其数值分别为40H,79H,24H,30H,19H,12H,02H,78H,00H,18H,要求利用XLAT指令,将十进制数字57转换成相应的7段代码值,存到BX寄存器中,写出响应的程序段。

程序代码和运行结果

1.4程序代码

; multi-segment executable file template.

data segment
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

table DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,18H
var DB 57H                                        

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ends


code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    MOV AL,var
    AND AL,0F0H
    SHR AL,4
    
    MOV BX,OFFSET table
    XLAT                  ;查找高四位
    MOV DH,AL             ;将高四位赋值到DH中
    
    MOV AL,var
    AND AL,0FH
    XLAT                  ;查找低四位   
    MOV DL,AL             ;将低四位赋值到DL中
    
    MOV BX,DX
         
         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;   
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends

end start ; set entry point and stop the assembler.

1.4运行结果
简单汇编程序,emu8086,单片机,51单片机,arm开发文章来源地址https://www.toymoban.com/news/detail-742277.html

到了这里,关于微机实验第一章:汇编程序的建立和简单的顺序结构汇编程序设计(B站)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实验一8086计CPU系统寻址方式和汇编语言程序设计

    实验一8086计CPU系统寻址方式和汇编语言程序设 一、实验目的 (1)掌握8086CPU系统的逻辑地址和寻址方式。 (2)掌握8086CPU系统中机器数的表示方式。 (3)掌握指令的机器码表示方法。 (4)掌握堆栈的概念和操作过程。 (5)掌握集成开发环境下的程序设计和调试方法。 (6)掌握汇编语言实

    2023年04月22日
    浏览(39)
  • 汇编语言实验8:BIOS/DOS功能调用与宏指令程序设计

    掌握汇编语言程序设计的基本方法和技能 掌握汇编语言源程序的编辑汇编连接和执行的完整过程 通过上机操作理解宏定义、宏调用、宏展开的概念,熟练运用宏功能编写程序 掌握BIOS/DOS基础功能的实现调用方法 理解常用的DOS功能调用的基本使用,能熟练运用1号,2号,9号,

    2024年02月03日
    浏览(57)
  • ARM汇编 : 汇编指令,伪指令,汇编程序格式

    计算机的指令集一般可分为4种: 复杂指令集(CISC) 精简指令集(RISC) 显式并行指令集(EPIC) 超长指令字指令集(VLIW) ARM指令集属于RISC,RISC相对于CISC指令集,主要有以下特点: ●Load/Store架构,CPU不能直接处理内存中的数据,要先将内存中的数据Load(加载)到寄存器中

    2024年02月12日
    浏览(25)
  • <微机原理>[汇编语言]-[实验八]矩阵键盘应用实验

    实验八 矩阵键盘应用实验.doc 掌握矩阵式键盘识别技术 进一步掌握数码管显示原理 Keil5 普中A2开发板 stc-isp 用单片机的并行口P1接矩阵键盘,在数码管上显示每个按键的“0—F”序号。对应的按键的序号排列如图所示: 使用EQU伪指令重新命名R0为KEY_VALUE方便代码后续的理解。

    2024年02月10日
    浏览(32)
  • [ARM 汇编]高级部分—性能优化与调试—3.4.2 ARM汇编程序调试技巧

    在ARM汇编程序开发过程中,调试是一个关键环节。适当的调试技巧可以帮助我们更快地定位问题、解决问题,从而提高开发效率。本节将讲解一些ARM汇编程序的调试技巧,并通过实例进行讲解。 使用GDB调试 GDB(GNU调试器)是一个功能强大的调试工具,它支持ARM汇编程序的调

    2024年02月10日
    浏览(43)
  • nas汇编程序的调试排错方法

    nas汇编程序的调试排错方法: 1、查找是哪一步错了 2、查看对应的*.lst文件,本例中是\\\"asmhead.lst\\\" 3、根据*.lst文件的[ERROR #002]提示查看源码,改错。 4、重新运行编译,OK nask.exe编译汇编程序时出错了 在文件中根据\\\"[ERROR\\\"查找就可以了。 E:techdoc30dayOScodeday03boyIasmhea

    2024年02月09日
    浏览(30)
  • <微机原理>[汇编语言]-[实验七]数码管动态显示实验

    实验一 软件开发环境和简单程序设计 实验二 I_O输入输出实验 实验三 键盘扫描显示实验 实验四 中断实验 实验五 定时器实验 实验六 串行口实验 实验七 数码管动态显示实验 实验八 矩阵键盘应用实验 实验九 电子时钟 微机原理实验课程,会陆续根据目录更新文章 掌握LED八段

    2024年02月07日
    浏览(33)
  • C/C++源程序到可执行程序exe的全过程(及汇编和反汇编的区别)

    1.C/C++源程序到可执行程序exe的全过程(及汇编和反汇编的区别) 一个现代编译器的主要工作流程如下: 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)。 简

    2024年02月10日
    浏览(32)
  • 【proteus】8086 写一个汇编程序并调试

    参考书籍:微机原理与接口技术——基于8086和Proteus仿真(第3版)p103-105,p119-122. 参考程序是p70,例4-1 在上一篇的基础上:  创建项目和汇编文件  双击8086的元件图: 可以修改size  比如这里修改成: 在asm中写一个简单的汇编程序: 编译:  编译通过: 选中内存和寄存器窗

    2024年02月08日
    浏览(27)
  • 实时数据库测试-汇编小程序

    实时数据库测试-汇编小程序。 hd.asm

    2024年04月28日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包