当前位置:首页 » 编程软件 » 微机编程程序

微机编程程序

发布时间: 2022-09-13 13:13:23

A. 微机原理:用汇编语言编制一段程序

1.编制一段程序求出下列公式中Z的值并放在RESULT单元,注X,Y,RESULT分别定义成字类型变量
Z=((X+Y)*4-Y)/2
答:
MOV
AX,X
ADD
AX,Y
SHL
AX,1
SHL
AX,1
SUB
AX,Y
SHR
AX,1
MOV
RESULT,AX
2.试编写一小侧面硬指令序列,在屏幕上显示出"Hello
everybody!"字符串,该字符串已在数据段定义好为变量string
答:
LEA
DX,string
MOV
AH,9
INT
21H

B. 微机原理编程

DATA SEGMENT
CLO DW ?
SUM DW ?
DATA ENDS

STACK SEGMENT
ST1 DW 64 DUP(?)
STACK ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX ;将数据段段基址装入ds
MOV AX,STACK
MOV SS,AX ;将堆栈段段基址装入ss
MOV CX,2 ;统计个数,初始值
MOV AX,1 ;被加元素,第一个是1
MOV DX,2 ;加数放在dx里,第一个是2
LG: ADD AX,DX ;两个元素相加
CMP AX,1000 ;和1000进行比较
JA NEXT ;大于1000跳转next,否则向下执行
INC CX ;否则个数加一
INC DX ;加数加一
JMP LG ;返回循环
NEXT:
MOV CLO,CX ;将累加个数送入CLO单元
MOV SUM,AX ;将累加和送入sum单元
MOV AH,4CH
INT 21H ;返回dos
CODE ENDS
END START

C. 微机原理 编写程序段,或补充完成完整程序

1、用寄存器BX和位移量COUNT的寄存器相对寻址方式,把存储器中的一个字与AX寄存器之内容相加,并把结果保存在存储器单元中。
解:ADD AX , [BX+COUNT]
MOV [BX+COUNT] , AX
2、将AX寄存器的内容减去CX寄存器的内容,并把结果保存在AX寄存器中。
解:SUB AX ,CX
3、下列程序的功能是:利用DOS的功能调用,显示一串字符;通过填空将下列程序补充完整。
STACK SEGMENT SYACK
DB 256 DUP (?)
TOP LABEL WORD
(STACK ENDS )
DATA SEGMENT
BUF DB ‘ I WISH YOU SUCCESS! $ ‘
DATA ENDS
CODE SEGEMENT
ASSUME (CS:CODE,DS:DATA,SS:STACK)
START: MOV AX,( DATA )
MOV DS,( AX )
MOV AX,( STACK )
MOV SS,AX
LEA SP, TOP
LEA DX,( BUF )
MOV AH,9
INT ( 21H )
(MOV AH, 4CH )
INT 21H
CODE ENDS
END START

D. 微机原理8255编程

;;8255硬件连接及软件设置:
;;B口方式0输入,PB0~PB3分别连接K1~K4;
;;A口方式0输出,PA0~PA3外接驱动电路控制灯的4种动作;
;;驱动电路,可由74LS06、ULN2003作反相电流放大驱动继电器或固体继电器组成;
;;C口闲置;
;;按以上设置,8255方式控制字是82H ;
;;在PC机作主机的系统中,8255的4个寄存器地址是:
;;A口60H,B口61H,方式控制寄存器63H。

;;汇编程序如下:

SSEG SEGMENT PARA STACK ;堆栈段定义
DW 30H DUP(?)
SSEG ENDS

CSEG SEGMENT ;代码段定义
ASSUME CS:CSEG,DS:CSEG

ORG 200h ;主程序首址
START: MOV AL, 82H ;方式控制字
MOV DX, 63H
OUT DX, AL ;方式控制字送入方式控制寄存器
Scan: IN AL,61H ;扫描从B口读入的K1~K4状态
CALL PRC1 ;开灯、关灯
CALL PRC2 ;是否暂停
CALL PRC3 ;是否换向
CALL PRC3 ;是否移动
JMP Scan ;主程序循环

PRC1 PROC NEAR ;"开/关灯"操作 子程序定义
PUSH AX ;B口状态进栈暂存
TEST AL,00000001B ;检测PB0输入状态
JZ CloseL ;若PB0低电平,表示K1断,转CloseL处执行
OpenL: OUT 60H,AL ;若PB0高电平,表示K1通,PA0输出高电平,开灯
JMP RT1 ;转RT1处指令返回
CloseL: MOV AL,00000000B ;PA0输出低电平
OUT 60H,AL ;关灯
RT1: POP AX ;B口状态出栈
RET ;返回主程序
PRC1 ENDP ;子程序定义完毕

PRC2 PROC NEAR ;"暂停"操作 子程序定义
PUSH AX ;B口状态进栈暂存
TEST AL,00000010B ;检测PB1输入状态
JZ RT2 ;若PB1低电平,表示K2断,不暂停
PAUS: OUT 60H,AL ;若PB1高电平,表示K2通,PA1输出高电平,暂停
RT2: POP AX ;B口状态出栈
RET ;返回主程序
PRC2 ENDP ;子程序定义完毕

PRC3 PROC NEAR ;"换向"操作 子程序定义
PUSH AX ;B口状态进栈暂存
TEST AL,00000100B ;检测PB2输入状态
JZ RT3 ;若PB2低电平,表示K3断,不换向
CHG: MOV AL,00000101B ;若PB2高电平,表示K3通
OUT 60H,AL ;PA2、PA0输出高电平、换向,灯保持亮
RT3: POP AX ;B口状态出栈
RET ;返回主程序
PRC3 ENDP ;子程序定义完毕

PRC4 PROC NEAR ;"移动"操作 子程序定义
TEST AL,00001000B ;检测PB3输入状态
JZ RT4 ;若PB3低电平,表示K4断,不移动
MOVE: MOV AL,00001001B ;若PB3高电平,表示K4通
OUT 60H,AL ;PA3、PA0输出高电平、移动,灯保持亮
RT4: RET ;返回主程序
PRC4 ENDP ;子程序定义完毕

CSEG ENDS ;代码段定义完毕
END START ;主程序结束

E. 微机 汇编 编程

code segment
assume cs:code
start:
mov ah,1;键盘输入一个字符
int 21h
cmp al,41h ;判断与'A'的关系
jb tj ;小于'A',则不是字母
cmp al,5ah ;判断与'Z'的关系
ja daxie ;大于'Z',可能是小写字母
add al,20h;大写转小写
jmp disp;显示小写字母
daxie:
cmp al,61h ;判断与'a'的关系
jb tj ;小于'a',则不是字母
cmp al,7ah ;判断与'z'的关系
ja tj ;大于'z',则不是字母
sub al,20h;小写转大写
disp:
mov dl,al
mov ah,2
int 21h
tj:
jmp start
mov ax,4c00h;结束程序
int 21h
code ends
end start

F. 1+2+3+...+100微机原理程序编程

:对于给定字符串的每一个字符,检查它是否是数字或大写字母,是则作相应处理,不是则继续读下一个.由此可以看出字符串什么时候结束得有限定条件,可以将字符串长度保存在寄存器或存储器中,也可设字符串以特定字符结束,通常以0结束.为了不和别人重复,设长度保存在前面的单元中.
DATAS SEGMENT
STRLEN DB 6
STR DB "38A4CE"
DATAS ENDS
编程时进行
1 设指针指向第一个字符,CX为循环次数
2 读当前指向字符
3 是数字么,是则替换为#
4 是大写字母么,是则改为小写
4 指针加1
5 LOOP 第2步
是数字或是大写字母可用函数表示
以下附代码:
DATAS SEGMENT
STRLEN DW 6
STR DB "38A4CE",13,10,'$'
DATAS ENDS
STACKS SEGMENT
DB 100 DUP (0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,OFFSET STR
MOV AH,9
INT 21H;显示修改前的字符串
MOV CX,[STRLEN];字符串长度值送CX控制循环次数
MOV SI,OFFSET STR;SI指向第一个字符
ABC:MOV AL,BYTE PTR [SI];读当前指向字符
CALL IS0_9;是数字么?
JC NEXT1
MOV BYTE PTR [SI],'#';CF=0表示是0-9
JMP AG
NEXT1:CALL ISA_Z;是大写字母么?
JC AG
ADD BYTE PTR [SI],20H;CF=0表示是A-Z
AG: INC SI
LOOP ABC
MOV AH,9
MOV DX,OFFSET STR
INT 21H;显示修改后的字符串
MOV AH,4CH
INT 21H
;入口参数:AL为待比较字符
;出口参数:如是0-9则CF=0,否则为1
IS0_9:
CMP AL,'0'
JB NOO
CMP AL,'9'
JA NOO
CLC
RET
NOO:STC
RET
;入口参数:AL为待比较字符
;出口参数:如是A-F则CF=0,否则为1
ISA_Z:
CMP AL,'A'
JB NOO1
CMP AL,'Z'
JA NOO1
CLC
RET
NOO1:STC
RET
CODES ENDS
END START

G. 微机原理: 编程程序,将AX寄存器中的4位十进制数转换为4个ASCII码,依次存放在BUF开始的4个连续字节单元

DATA SEGMENT
BUF DB 4DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN: MOV BX,DATA
MOV DS,BX
MOV DL,4
MOV CL,4
LEA SI,BUF
LOP: ROL AX,CL
MOV BL,AL
AND BL,0FH
OR BL,30H
MOV [SI],BL
INC SI
DEC DL
JNZ LOP
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN

H. 如何在微机上编程数控程序PRG

扩展名是PRG,但是用随便一个软件都能打开,是文本格式的。可以先打开记事本,再把你的文件拖进去。

I. 计算机怎么编程

1、如果只是单纯辅助的编写一些小软件来辅助自己的主要工作,那么学习编程就相对来说学得简单一些。先了解目前的开发语言和环境,结合自己需要做什么小软件,然后找一门开发语言来学习就可以达到目的。但如果比较复杂的软件,因为基础和学习的深度不够,要开发这个软件就有些难度了。如果辅助性质的小软件,推荐使用VB.net,特别是桌面软件。这个开发环境比较容易入手,控件拖动,使用的语法比较容易理解,很容易上手。或C#.net,对于新手而且相对VB.net来说,个人感觉没有这么容易好理解。花一个月时间可能就能做一个小软件了。当然要参与到大型项目中,完全新手那就不是一个月的时间能解决的了。

2、如果是要从事软件开发的工作,那么学习时间就比较长了。对于软件开发者来说,不只是开发语言,还有计算机、网络的相关基础知识才行。

①:先说开发语言。确定好自己今后要从事的主要的开发语言,然后开始学习。比如:选择.net系列、或者Java、或者python等等。可以在网络上搜索一些成套的基础教程(一定从成套的教程,因为是由浅入深,学起来系统性而且容易上手),开始学习。配置好环境,一步一步按照教程进行实践。

②:基础知识。作为软件开发者来说,单纯只具有开发语言的知识是很难有大的发展的。因为对于计算机、软件、系统、数据库、网络等等不深入了解的话,一旦涉及到深入的开发,你就没辙了。比如网络协议、接口、API等等相关知识。

那么基础知识要学习哪些呢?这里建议最基本的基础知识至少还是要学习的。比如:计算机组成与原理、操作系统、计算机网络、数据库原理、数据结构、编译原理、软件工程、软件测试等等。不一定要专门花时间到外培训,但至少自己花一些时间自学也是好的。万丈高楼从地起,没有基础就不可能高。

从事软件开发行业是一个不断持续学习的过程,从事到老还要学到老。行业更新的知识太快,如果不学就跟不上。基础知识不牢靠,今后工作学习中不能理解的就更多,会形成障碍的。

热点内容
文件存储和数据库存储 发布:2025-04-05 18:20:34 浏览:329
安卓手机a16数据在哪个文件夹 发布:2025-04-05 18:01:44 浏览:488
netty实现ftp 发布:2025-04-05 17:35:54 浏览:93
打印菱形java 发布:2025-04-05 17:35:53 浏览:913
等响算法 发布:2025-04-05 17:24:17 浏览:999
算法精编 发布:2025-04-05 17:17:03 浏览:356
虐杀原形2和热血无赖哪个配置高 发布:2025-04-05 17:09:23 浏览:611
计算机常用算法 发布:2025-04-05 17:07:54 浏览:65
天选2密码在哪里设置 发布:2025-04-05 16:36:28 浏览:87
目前什么安卓手机续航能力最强 发布:2025-04-05 16:31:22 浏览:598