贺利坚老师汇编实验八

2023-11-03 08:31
文章标签 实验 老师 汇编 贺利坚

本文主要是介绍贺利坚老师汇编实验八,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

任务1 - 射击游戏框架

仿照第15周课堂项目三(见教学平台中第15周课堂项目参考),编写程序一个“射击游戏”(有些太弱了哈),用上、下、左、右键控制跳上、跳下、装子弹、射击的动作,按ESC键退出游戏。

运行结果如图:

assume cs:code
stack segmentdb 256 dup (0)
stack endsdata segmentdw 0,0home  db 'Game is runing...',10,13,'$'jup   db 'Jump up...',10,13,'$'jdw   db 'Jump down...',10,13,'$'gbt   db 'Get bullet...',10,13,'$'sht   db 'Shoot...',10,13,'$'bbe   db 'Byebye...',10,13,'$'
data endscode segment
start:mov ax,stackmov ss,axmov sp,256mov ax,datamov ds,ax;改中断例程入口地址mov ax,0mov es,axpush es:[9*4]pop ds:[0]push es:[9*4+2]pop ds:[2]mov word ptr es:[9*4],offset int9mov es:[9*4+2],csrunning:lea dx,homemov ah,9int 21hcall delayjmp runningdelay:push dxpush axmov dx,10hmov ax,0
s:   sub ax,1sbb dx,0cmp ax,0jne scmp dx,0jne spop axpop dxret; 定义中断例程
int9:push axpush bxpush dxpush esin al,60hpushfpushfpop bxand bh,11111100bpush bxpopfcall dword ptr ds:[0]begin: mov bl, al ;保存alcmp al,48h ;48h是上键的扫描码je upcmp al,50h ;50h是下键的扫描码je downcmp al,4bh ;4bh是左键的扫描码je leftcmp al,4dh ;4d是右键的扫描码je rightcmp al,01h ;01h是esc键的扫描码je exitjmp int9retup:   lea dx,jupjmp display
down: lea dx,jdwjmp display
left: lea dx,gbtjmp display
right:lea dx,shtjmp displaydisplay:mov ah,9int 21hjmp int9retexit: lea dx,bbemov ah,9int 21hmov ax,0mov es,ax;恢复恢复中断向量push ds:[0]pop es:[9*4]push ds:[2]pop es:[9*4+2]mov ax,4c00hint 21hint9ret:pop espop dxpop bxpop axiretcode ends
end start

任务2-汇编程序的简洁写法

编写程序:从键盘上输入一个字符串,以$结束,再将字符串倒序输出(字符串不超过80个字符)。

输入样例:abcd#1234 efg$

输出样例:gfe 321#dcba

算法要求:逐个输入字符(21H中断的01H功能)并压栈,遇$后,将字符出栈按倒序写入数据区,输出字符串(21H中断的09H功能)

编写的程序如下:

.8086
.model small
.datastr db 81 dup('$') ;Make sure you encounter $ stop when reading characters.
.stack 256
.code
.startupmov cx,0lea bx,str
input:mov ah,1int 21hcmp al,'$'je sinc cx ;Record the length of characters entered.push axjmp input
s:  pop axmov [bx],alinc bx ;The stack is saved to the data block.loop smov ah,02hmov dl,0ahint 21hlea dx,strmov ah,9hint 21h ;Output string (in reverse order)..exit 0
end

 

这篇关于贺利坚老师汇编实验八的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336919

相关文章

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

汇编:嵌入式软件架构学习资源

成为嵌入式软件架构设计师需要掌握多方面的知识,包括嵌入式系统、实时操作系统、硬件接口、软件设计模式等。 以下是一些推荐的博客和网站,可以帮助你深入学习嵌入式软件架构设计: ### 1. **Embedded.com**    - **网址**: [Embedded.com](https://www.embedded.com/)    - **简介**: 这是一个专注于嵌入式系统设计的专业网

61.以太网数据回环实验(4)以太网数据收发器发送模块

(1)状态转移图: (2)IP数据包格式: (3)UDP数据包格式: (4)以太网发送模块代码: module udp_tx(input wire gmii_txc ,input wire reset_n ,input wire tx_start_en , //以太网开始发送信

LTspice模拟CCM和DCM模式的BUCK电路实验及参数计算

关于BUCK电路的原理可以参考硬件工程师炼成之路写的《 手撕Buck!Buck公式推导过程》.实验内容是将12V~5V的Buck电路仿真,要求纹波电压小于15mv. CCM和DCM的区别: CCM:在一个开关周期内,电感电流从不会到0. DCM:在开关周期内,电感电流总会到0. CCM模式Buck电路仿真: 在用LTspice模拟CCM电路时,MOS管驱动信号频率为100Khz,负载为10R(可自

资料分析系统课-刘文超老师

1、考试大纲 2、解题的问题->解决方法     3、统计术语  基期量与现期量:作为对比参照的时期称为基期,而相对于基期的称为现期。描述具体数值时我们称之为基期量和现期量。 增长量:是指基期量与现期量增长(或减少)的绝对量。增长量是具体值,有单位。增长量=现期量-基期量。增长量有正负,负值代表减少量。增长率:  年均增长量:    年均增长率: 同比和环比

HCIA--实验十:路由的递归特性

递归路由的理解 一、实验内容 1.需求/要求: 使用4台路由器,在AR1和AR4上分别配置一个LOOPBACK接口,根据路由的递归特性,写一系列的静态路由实现让1.1.1.1和4.4.4.4的双向通信。 二、实验过程 1.拓扑图: 2.步骤: (下列命令行可以直接复制在ensp) 1.如拓扑图所示,配置各路由器的基本信息: 各接口的ip地址及子网掩码,给AR1和AR4分别配置

GDB 查看汇编

查看汇编 x disassemble

爬取豪ru老师刘艳小说

网址准备 可自行搜索,发现在电脑端无法获取内容,用浏览器仿手机的功能实现 抓包分析,发现网址非常简单,没有任何的反爬措施 可以得到返回的页面,而且字体也没用常见的反爬措施 接下来就分析各个章节的属性就大功告成了 爬取到了 警告,技术不可用于传播黄色