School assignment

news2024/11/19 19:34:01

目录

一、常用控制类汇编指令

二、编程实现统计寄存器AX中“1”和“0”的个数

三、编程实现从键盘输入10个1位整数

四、编程实现从键盘输入两个10进制的2位整数的和

五、编写程序练习直接、间接、相对、基址变址寻址


一、常用控制类汇编指令

MOV 传送字或字节.

MOVSX 先符号扩展,再传送.

MOVZX 先零扩展,再传送.

PUSH 把字压入堆栈.

POP 把字弹出堆栈.

PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

BSWAP 交换32位寄存器里字节的顺序

XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )

XADD 先交换再累加.( 结果在第一个操作数里 )

XLAT 字节查表转换.

── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即

0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )

IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )

OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )

输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,

其范围是 0-65535。

二、编程实现统计寄存器AX中“1”和“0”的个数

DATAS segment

DATAS ends

CODES segment

START:

    mov AX,DATAS

    mov DS,AX

    ;正式代码部分

    mov  AX,1001111011B ;2进制数7个1

    mov  CX,0   ;CX置为0

    mov  CH,16  ;记录当前操作的第几位数字

NEXT:

    test AX,0001H;让...0001与AX进行 与 运算

    JZ isZero   ;如果为0继续循环判断下一个

    inc  CL     ;自增1

isZero:

    dec  CH     ;高位-1

    JZ   EXIT   ;if(CH=0)则跳转到EXIT

    SHR  AX,1   ;逻辑右移1位

    JMP  NEXT

EXIT:

    count db ?,'$';向屏幕打印输出结果

    add cl,30H

    mov count,cl

    Lea dx,count

    mov AH,09   ;09号功能调用

    INT  21H

    mov  AL,0   ;置退出码

    mov  AH,4CH ;置功能调用号

    INT  21H    ;软中断指令:实施功能调用

CODES ends

    end START

三、编程实现从键盘输入10个1位整数

DATA SEGMENT

STR1 DB "Please input a number: $"

STR2 DB "The sum is: $"

CRLF DB 0AH,0DH,'$'   ;换行

COUNT DB 0

DIVNUM DB 10

RESULT DB 0,0,0,0,0,0,0,0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

LOOP1:

CALL INPUT ;子程序调用

CMP AL,0DH

JZ ENDINPUT

SUB AL,30H

ADD COUNT,AL

LEA DX,CRLF ;换行

MOV AH,9

INT 21H

JMP LOOP1

ENDINPUT:

LEA DX,STR2 ;换行

MOV AH,9

INT 21H

MOV AL,COUNT

MOV AH,0 ;使AX=AL作为被除数

MOV SI,0

LOOP2:

DIV DIVNUM   ; AL......AH

;ADD AH,30H

MOV RESULT[SI],AH

CMP AL,0

JZ NEXT

MOV AH,0

ADD SI,1

JMP LOOP2

NEXT:

ADD SI,1

MOV CX,SI

SUB SI,1

LOOP3:

ADD RESULT[SI],30H

MOV AH,02H

MOV DL,RESULT[SI]

INT 21H

SUB SI,1

LOOP LOOP3

MOV AX,4C00H

INT 21H

INPUT PROC

LEA DX,STR1

MOV AH,9

INT 21H

MOV AH,1

INT 21H

RET

INPUT ENDP

CODE ENDS

END START

四、编程实现从键盘输入两个10进制的2位整数的和

stack segment

db 10 dup(?)

stack ends

data segment

;显示提示语句

string_1 db 'input num a: $'

string_2 db 0ah,0dh,'input num b: $'

string_3 db 0ah,0dh,'a+b= $'

data ends

code segment

assume cs:code,ds:data,ss:stack

start:

mov ax,data

mov ds,ax

;显示提示

lea dx,string_1

mov ah,09h

int 21h

;读取第一个数

mov ah,01h

int 21h

sub al,30h

mov bl,al

lea dx,string_2

mov ah,09h

int 21h

;读取第二个数

mov ah,01h

int 21h

sub al,30h

lea dx,string_3

mov ah,09h

int 21h

;将最后的结果放入al中 AAA是关键

xor ah,ah

add al,bl

AAA

push ax; 保护ax

;输出结果的高位

add ah,30h

mov dl,ah

mov ah,02h

int 21h

pop ax

;输出结果的低位

add al,30h

mov dl,al

mov ah,02h

int 21h

mov ax,4c00h

int 21h

code ends

end start

五、编写程序练习直接、间接、相对、基址变址寻址

准备工作:使用E命令,要求对2000H:3000H字单元预置数据。

(1)采用直接寻址方式,实现将逻辑地址2000H:3000H内存单元开始的字数据传送至AX寄存器,用A命令编写程序实现。用T命令单步执行,并记录运行结果。

 (2)采用寄存器间接寻址方式,实现将逻辑地址2000H:3000H的内存单元中数据传送至BX寄存器,用A命令编写程序实现,用T命令单步执行,并记录运行结

(3)预设(SI)=0100H,(DS)=2000H,(21100H)=6789H。已知偏移量D=1000H,采用寄存器相对寻址方式,将内存单元(21100H)的内容读出送给AX寄存器(即给AX赋值为6789H),用A命令编写程序实现,用T命令单步执行,并记录运行结果。

(4)预设(DS)=2000H,(21200H)=1234H。采用基址变址寻址方式将物理地址21200H单元内容传送到AX,用A命令编写程序实现,用T命令单步执行,并记录运行结果。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM虚拟机

"天下事有难易乎?为之则易,不为则难" 一、初识JVM JVM是一个跨语言的平台,为那些能够跨平台运行的程序提供一个平台,JVM本身与java语言没有必然的联系,它只与特定的二进制文件格式.class文件所关联&#xff…

人生重开模拟器(Python实现)

文章目录人生重开模拟器介绍代码实现打印初始界面设置初始属性设置角色性别设置角色出生点针对每一岁,生成人生经历人生重开模拟器介绍 人生重开模拟器是由VickScarlet上传至GitHub的一款简单的文字网页游戏。 玩家点击“立即重开”并设置角色的初始属性后&#xf…

HTML 学习总结

超级详细的 HTML 学习笔记,一篇入门系列!!耐心读一遍 复习必备!! 目录 简要 认识标签 基本结构 常见标签 1. 注释 ---> ctrl / 2. 标题标签 ---> h1 h2 h3 h4 h5 h6 3. 段落标签 ---> p 4. 换行 ---> br …

Git | 一文带你零基础快速上手Git

👑 博主简介:    🥇 Java领域新星创作者    🥇 阿里云开发者社区专家博主、星级博主、技术博主 🤝 交流社区:BoBooY(优质编程学习笔记社区) 前言:本文适合零基础小白…

Docker

目录1、docker介绍1.1 docker是什么1.2 容器与虚拟机的比较2、docker安装2.1 docker 基本组成2.2 安装步骤2.3 阿里云镜像加速2.4 run干了什么3、docker常用命令3.1 帮助命令及启动命令3.2 镜像命令3.3 容器命令4、Docker镜像4.1 镜像是什么?4.2 分层镜像 UnionFS 联…

时间复杂度和空间复杂度

文章目录一、算法的复杂度二、时间复杂度1.时间复杂度概念2.大O的渐进表示法3.常见时间复杂度计算举例3.1 实例1 【 O(N)】3.2 实例2 【O(NM)】3.3 实例3 【O(1)】3.4 实例4 【O(N)】3.5 实例5 【O(N^2)】3.6 实例6 【O(logN)】3.7 实例7 【O(N)】3.8 实例8【O(2^N)】三、空间复…

新的3D地图制图技术改变了全球定位的游戏规则

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。 在人类技术发展的历史长河…

市场裁猿~ 行业内卷~ Android 开发突破重围?

往日光鲜亮丽的互联网企业在今年彻底进入了寒冬,往年的高不可攀,低成本运营,在今年都不再是护身符。更是有不少互联网大厂开启了裁员模式,其中就有百度、阿里巴巴、快手、汽车之家等知名企业。 从今年三月起直到现在互联网各厂裁员…

【微信小程序系列:二】小程序常用功能:文字可复制、跳转地图、扫一扫、拨打电话、调整屏幕亮度、监听截屏...

一.先言: (~ ̄▽ ̄)~,hello,微信小程序系列第二篇,介绍下小程序里的常用功能api,可以快速copy使用~ 二.文字可复制: 小程序页面里的文字默认是没有长按复制功…

自动泊车停车位检测算法

转自:https://zhuanlan.zhihu.com/p/522630354 图1:泊车示意图一、背景介绍 自动泊车大体可分为4个等级: 第1级,APA 自动泊车:驾驶员在车内,随时准备制动,分为雷达感知和雷达视觉感知两种方式。…

手机批发业务-商品备选区

样式 代码 <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"author" content"huyiwei"><meta name"generator" content"HBuilder X"><title>…

大数据项目之电商数仓、用户行为日志、服务器和JDK准备、模拟数据

文章目录3. 用户行为日志3.4 服务器和JDK准备3.4.1 服务器准备3.4.2 编写集群分发脚本xsync3.4.3 SSH无密登录配置3.4.4 JDK准备3.4.5 环境变量配置说明3.5 模拟数据3.5.1 使用说明3.5.1.1 将application.yml、gmall2020-mock-log-2021-10-10.jar、path.json、logback.xml上传到…

【C语言】经典编程题

文章目录1. Fibonacci数列 ⭐️2. 替换空格 &#x1f31f;3. 找单身狗 &#x1f4ab;4. 模拟实现 atoi ✨1. Fibonacci数列 ⭐️ 做题链接&#xff1a;Fibonacci数列 Fibonacci数列是这样定义的&#xff1a; F[0] 0 F[1] 1 for each i ≥ 2: F[i] F[i-1] F[i-2] 因此&…

[数据结构初阶]算法的时空复杂度

目录 算法效率 如何衡量一个算法的好坏 算法的复杂度 时间复杂度 时间复杂度的概念 大O的渐进表示法 常见时间复杂度计算举例 例一&#xff1a; 例二&#xff1a; 例三&#xff1a; 例四&#xff1a…

C规范编辑笔记(三)

继上篇我们的C规范编辑笔记(二)后&#xff0c;我们今天开始分享第三篇笔记&#xff0c;话不多说&#xff0c;我们开始~ 1、一个 tab 键盘等于四个空格键。我们在编程的时候最好使用空格键而不是使用 tab 键&#xff0c;当两个编译器的 tab 键设置的大小不一样的时候&#xff0…

无人机基础知识:多旋翼无人机自动控制原理与算法

无人机基础知识&#xff1a;多旋翼无人机自动控制原理与算法前言无人机自动控制器PID控制算法前言 无人机&#xff08;Unmanned Aerial Vehicle&#xff09;&#xff0c;指的是一种由动力驱动的、无线遥控或自主飞行、机上无人驾驶并可重复使用的飞行器&#xff0c;飞机通过机…

Linux:进程描述、进程创建(fork)、进程状态(僵尸进程、孤儿进程)

目录操作系统进程的基本概念进程创建&#xff08;fork)进程状态僵尸进程孤儿进程操作系统 操作系统是一个管理计算机软硬件资源的软件&#xff0c;它包括内核&#xff08;进程管理&#xff0c;内存管理&#xff0c;文件管理&#xff0c;驱动管理&#xff09;和其他程序&#x…

神经网络输出表达式,神经网络数据格式

1、BP神经网络输入输出格式问题 在你的代码基础上说了。 clc;clear; close all; pload(originaldata.txt);%你问题最后说的数据文件名跟这个不同。 p1p; t[1];% 这个输出&#xff08;Targets&#xff09;应该和输入数据对应&#xff0c;输入数据有10个&#xff0c;输出应该也是…

如何从0到1搭建一个个人网站

前言 如何从0到1搭建一个可以外网访问的项目&#xff1f; 我就用自己的服务器给大家举例&#xff0c;怎么从0到1搭建一个学生和新手可以用来面试的项目&#xff0c;老手也可以回忆一下自己逝去的青春。 服务器在激活的时候会让你选系统&#xff0c;这个时候敖丙我个人建议&a…

软考 | 计算机系统

CPU 计算机系统硬件组成 计算机系统是由软硬件共同组成&#xff0c;协同运行程序。计算机的基本硬件由 运算器、控制器、存储器、输入设备、输出设备 5 大部件组成。其中&#xff0c;运算器和控制器等部件集成到一起的部分称为中央处理器&#xff08;CPU&#xff09;。CPU 是…