- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
河南理工大学微机原理与单片机接口技术 程序设计071020
了解的内容:段各类属性(如:对齐类型、组合类型等)的含义,源程序的各种辅助说明伪指令。
掌握的内容:段寄存器说明语句的作用,堆栈段定义的特殊性。
熟练掌握的内容:段的完整定义和简化定义。
程序的四大结构(顺序结构、分支结构、循环结构和子程序)在汇编语言中的表现形式。
汇编语言的常用编程工具——MASM、LINK和Debug——的使用。;机器语言、汇编语言和高级语言;CODE1 SEGMENT
ASSUME CS:CODE1, DS:DATA1
START:MOV AX, DATA1
MOV DS, AX
XOR AX, AX ;用AX来对正数计数
XOR BX, BX ;用BX来对负数计数
XOR DX, DX ;用DX来对零计数
MOV CX, data ;用CX来进行循环计数
JCXZ save ;考虑数组的元素个数为0的情况
LEA SI, data+2 ;用指针SI来访问整个数组;again: CMP word ptr [SI], 0
JL lower
JE equal
INC AX
JMP loop1
lower: INC BX
JMP loop1
equal: INC DX
loop1: ADD SI, 2
LOOP again
save: MOV Positive, AX ;把各类的统计数保存到内存单元中
MOV Negative, BX
MOV Zero, DX
MOV AX, 4C00H
INT 21H
CODE1 ENDS
END START;汇编语言源程序书写格式;第二部分是操作符。
第三部分是参数域。参数域都可由以下几种形式组成:常数、寄存器名、存储器操作数和表达式。
有三种运算符:算术运算符、逻辑运算符和关系运算符;两种操作符:数值回送操作符和属性操作符。;数据定义及存储分配伪指令
格式:[变量名] DB/DW/DD/DQ/DT 数据项表 [;注释];段定义伪指令SEGMENT/ENDS
格式:
段名 SEGMENT [定位类型] [组合类型] [`类别`]
┇ ;段内语句序列
段名 ENDS;过程定义伪指令
定义子程序的格式为:
过程名 PROC [NEAR]/[FAR]
┇
RET
┇
过程名 ENDP;程序设计步骤;程序的基本结构;START: MOV AX,STACK_SEG
MOV SS,AX
MOV SP,OFFSET TOP
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA_SEG
MOV DS,AX
MOV AX,X
ADD AX,8
MUL X
ADD AX,8
MUL X
ADD AX,6
MOV Y,AX
RET
MAIN ENDP
CODE_SEG ENDS
END START;data segment ;数据段
msg db 0dh,0ah,07h,Hello$
data ends
ss_seg segment ;堆栈段
db 256 dup(?)
ss_seg ends
code segment ;代码段
assume cs:code,ds:data,ss:ss_seg
main proc far
push ds ;标准序
mov ax,0
push ax
mov ax,data ;设置数据段
mov ds,ax
lea dx,msg ;取字符串地址;在数据段中存放两个32位二进制无符号数DATA1和DATA2,编制一程序计算两数之和,结果存于RESULT单元中。
title double word add program
data segment para public data
data1 dd 1565764587
data2 dd 1293773646
result dd ?
data ends
ss_seg segment para s
文档评论(0)