汇编程序语言设计

DOS功能调用

DOS功能调用中的4CH号调用,其功能是结束当前程序,返回DOS,其调用方法是在程序结束前加入一下两条指令

MOV AH,4CH

INT 21H

用汇编语言程序实现C = A + B

DATA SEGMENT
    A DB ?
    B DB ?
    C DB ?
DATA ENDS
STACK SEGMENT
    ST DB 200 DUP(?)
STACK ENDS
CODE SEGMENT
    MAIN PROC FAR
    ASSUME CS:CODE,DS:DATA
    START
    PUSH DS
    XOR AX,AX
    PUSH AX
    MOV AX,DATA
    MOV DS,AX
    MOV A,78
    MOV B,-65
    MOV AL,A
    MOV AL,B
    MOV C,AL
    RET
    MAIN ENDP
CODE ENDS
END START

对汇编程序语言结构的说明,

分段结构,至少包含代码段

变量的定义,通常在数据段和附加段完成

堆栈段主要用于存放需要保护的数据,

ASSUME伪指令

指明程序逻辑段和存储器物理段之间的对应关系,但没有建立对应关系

用END伪指令结束整个源程序。

关系运算符:

相等

不相等小于大于小于等于大于等于
EQNELTGTLEGE

操作对象:数值或统一逻辑段地址

关系运算结果成立时,其结果全为1,

结果不成立时,其结果全为0

逻辑运算符

逻辑非逻辑与逻辑或逻辑异或
NOTANDORXOR

分析运算符主要用于分析操作对象的属性,操作对象可以是变量或标号

运算符操作对象功能
OFFSET变量或标号分析变量或标号所在逻辑段的偏移地址
SEG变量或标号分析变量或标号所在逻辑段的段地址
TYPE变量或标号分析变量或标号的类型属性
LENGTE变量分析变量的长度
SIZE变量分析变量的大小

伪指令

用于告诉汇编程序逻辑段和物理段之间的关系

注意:

ASSUME语句一般放在代码段内,一般放在代码段之首

ASSUME位操作只是通知汇编程序有关段寄存器与逻辑段关系,并没有给段寄存器赋予实际的初值。

数据定义伪指令

语句格式

变量名        DB         表达式        ;定义字节数据

变量名        DW        表达式        ;定义子数据

变量名         DD        表达式        ;定义双子数据

操作数:操作数是变量定义时分配的存储空间中赋予的初值,可以是数字,字符串,表达式,变量和标号。

1,操作数是一个或多个变量数值常量

如果是多个操作数,操作数之间用,隔开

例:D1 DB  12H,25H

定义字节类型变量D1,分配两个存储单元,初值位12H,25H

D2 DW 1234H

定义字类型变量D2,分配两个存储单元,初值为34H,12H

D3 DD 1A2B3C4D

定义双子类型变量,分配四个存储单元,初值为,4DH,3CH,2BH,1AH

2,操作数是一个或多个可求值的数值表达式。

顺序结构设计

例,在内存数据区2100H单元存有2位压缩BCD码,将其变成非压缩BCD码,低位位于2100H,高位位于2101H

分析:2100H单元存储2位BCD码需要将2位进行分离

分离出低四位的方法,数据与0FH进行逻辑与运算

分理出高四位的方法,将数据进行右移四位

DATA SEGMENT
    ORG 2000H
ZBCD DB 56H
FBCD DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS,DATA
START:
MOV AX,DATA
MOV DS,AX
LEA BX ZBCD
MOV AL,[BX]
AND ZEBD,0FH
MOV CL,4
SHR AL,CL
MOV [BX+1],AL
MOV AH,4CH
INT 21H
CODE ENDS
END START

例2:已知一班微机原理课程按照学号从小到大的顺序排例在SCOCE表格中,要差的学生学号存放在变量NO中,查找学生的成绩将成绩存放到RESULT单元中。

DATA SEGMENT
SCORE DB 85,76,67,57,82,74,92,95,83,68
NO DB 7
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEB BX.SCORE
MOV AL,NO
DEC AL
XLAT
MOV RESULT,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START

分支结构程序设计

将键盘输入的一个小写字母用大写字母的形式在屏幕上显示出来

CODE SEGMENT
ASSUME CS:CODE
MAIN PROC FAR
START
PUSH DS
MOV AX,0
PUSH AX
MOV AH,1
INT 21H
CMP AL,'a'
JB OVERFLOW
CMP AL,'Z'
JA OVERFLOW
SUB AL,20H
MOV DL,AL
MOV AH,06H
INT 21H
OVERFLOW :RET
MAIN ENDP
CODE ENDS
END START

内存自1000H开始存放3个带符号的字节数据,将其中最大的值送到气候的RESULT单元

DATA SEGMENT
    ORG 1000H
BUF DB 13H,89H,76H
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX:DATA
MOV DS,AX
MOV BX,1000H
MOV AL,[BX]
INC BX
CMP AL,[BX]
JGE NEXT
MOV AL,[BX]
NEXT:
INC BX
CMP AL,[BX]
JGE EXIT
MOV AL,[BX]
EXIT:MOV RESULT AL
MOV AH,4CH
INT 21H
CODE ENDS 
END START

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值