汇编语言语句类型格式

汇编语言源程序的中的语句分为两大类:指令性语句和指示性语句

指令性就是能够被CPU执行的语句;指示性就是不被CPU执行的指令,不能生成目标代码,又称为伪操作语句或伪指令。

操作数可以是寄存器或存储器或数据段。数据段可以是常量,表达式,变量,标号。

标号代表存放一条指令的存储单元的符号地址,后面必须加冒号。有段值,段偏移量,类型三个属性。

表达式:

1 诸如算术运算符值类的运算:

MOV AL,8+5 等价于MOV AL,13

2 同时还有逻辑运算符,名字和指令的AND,OR,XOR等相同。

MOV AL,0AH AND 0CCH

3 关系运算符EQ NE LT LE GT GE

MOV AX,4 EQ 3  汇编指令为 MOV AX,0

关于伪指令:

1 数据定义的伪指令

  常用的指令有DB,DW,DD,DQ,DT,分别代表定义变量为1,2,4,8,10个字节类型。

  定义操作书的相关伪代码如下:

  DATA DB 11H,33H;  包含两个元素的字节变量DATA

  NUM DW 100*5+88

  STR DB ‘HELLO

  数据定义的操作数 还可以是 ? ,对变量保留相应的存储单元,但不赋予变量的值。小编在写程序的时候 需要加引号。

2 重复操作符 DUP

  DATA1 DB 20 DUP(‘?‘)   ; 20代表为变量DATA1分配20个字节的存储空间,初值为任意值,或者为 相对应的存储单元本来的值。

关于DOS的调用:

输入单个字符显示:

CODE SEGMENT
    ASSUME CS:CODE
    START: MOV AH,1
    INT 21H
    JMP START
    CODE ENDS
END START

显示单个字符:

CODE SEGMENT
    ASSUME CS:CODE
    START: MOV DL,‘B‘
    MOV AH,2
    INT 21H
    CODE ENDS
END START

输入字符串:

DATA SEGMENT
    STRING DB 10,0,10 DUP(‘?‘)
    DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
    MOV DS,AX
    LEA DX,STRING
    MOV AH,0AH
    INT 21H
    MOV CL,STRING+1
    XOR CH,CH
    ADD DX,CX
    MOV BX,DX
    MOV BYTE PTR[BX+2],‘$‘
    MOV AH,4CH
    INT 21H
    CODE ENDS
END START     

显示字符串:

DATA SEGMENT
   STR DB ‘123ABC‘
   DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
    START:MOV AX,DATA
    mov ds,ax
    lea bx,str
    MOV CX,6
    LPP: MOV AH,2
    MOV DL,[BX]
    INC BX
    INT 21H
    LOOP LPP
    MOV AH,4CH
    INT 21H
    CODE ENDS
END START     

原文地址:https://www.cnblogs.com/a-runner/p/12584077.html

时间: 2024-08-30 15:20:06

汇编语言语句类型格式的相关文章

04 循环结构概述和for语句的格式及其使用

04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do-while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } C执行流程: a:执行初始化语句 b:执行判断条件语句,看其返回值是true还是false 如果是true,就继续执行 如果是false,就结束循环 c:执行循环体语句; d:执行循环后的操作表达式 e:回到B继续. D:案例演示 在控制台输出10次"hellow

JAVA-初步认识-第三章-语句-if格式2

一. if语句的第二种格式 第二种格式如下,if和else各引领一个代码段. 下面是第二种格式的实际操作,if第二种选择结构控制着两端代码段,不是执行上面的代码,就是执行下面的代码. 但是if语句执行结束后,下面的代码还是接着执行,if选择结构只能控制属于自己的语句. 格式书写不正确,编译器是不认识的,DOS在编译的时候会报错. 简化有好处,也有弊端或者说局限性.只能输出变量数据,其他类型的是无法在三元运算符中操作的,结果在下图呈现.三元运算符作为一种运算符,一定要有结果. 这里说的结果,我猜是

04循环结构概述和for语句的格式及其使用

* A:循环结构的分类 * for,while,do...while * B:循环结构for语句的格式:* for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; }* C执行流程: * a:执行初始化语句 * b:执行判断条件语句,看其返回值是true还是false * 如果是true,就继续执行 * 如果是false,就结束循环 * c:执行循环体语句; * d:执行循环后的操作表达式 * e:回到B继续.* D:案例演示 * 在控制台输出10次"helloworld"

29 Java语言基础选择结构switch语句的格式及其解释 Tooho King

switch 语句的格式 inx = 10 switch(表达式){ case 值1; break; case 值2; break; ... defualt: 语句n-1; break; } 注意  btye short char String 才能作为表达式 long不行 也就是基本类型里面能够转换为int的类型都可以做为case的表达式. 1 public class Test1_DataTypeConversion { 2 3 public static void main(String[

4th 循环结构概述和for语句的格式及其使用

04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } C执行流程: a:执行初始化语句 b:执行判断条件语句,看其返回值是true还是false 如果是true,就继续执行 如果是false,就结束循环 c:执行循环体语句; d:执行循环后的操作表达式 e:回到B继续. D:案例演示 在控制台输出10次"hell

<07> switch语句基本格式+

switch语句基本格式switch(表达式){ case 常量表达式1: 语句1; case 常量表达式2: 语句2; case 常量表达式3: 语句3; case 常量表达式4: 语句4; case 常量表达式5: 语句5; case 常量表达式6: 语句6; default: printf("其他"); } 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5 //提示用户点菜,1

switch语句语法格式

switch语句语法格式Switch是多条件判断语句. 注意:使用switch中的表达式里面只能放字符或数字 使用时不要忘了在case语句之后加上一个break,表示退出整个语句,如果不加入此语句,它会从第一个满足条件的地方开始后续的都要被执行.我们看下如果在case语句后面没有加上break话会出现什么结果我们发现不应该输出的case 2也输出了.我们再修改下i值为2,加个case 3看下效果.我们发现不满足条件的case 1没有被输出,而case 2和case 3输出了,所以我们也验证了如果

linux 几个控制流语句的格式例子(if语句)

linux 几个控制流语句的格式例子:if 语句例子:#!/bin/sh a=10b=20 if [ $a == $b ]then echo "a is equal to b"elif [ $a -gt $b ]then echo "a is greater than b"elif [ $a -lt $b ]then echo "a is less than b"else echo "None of the condition met&

SQL 语句转换格式函数Cast、Convert

SQL 语句转换格式函数Cast.Convert CAST和CONVERT都经常被使用.特别提取出来作为一篇文章,方便查找. CAST.CONVERT都可以执行数据类型转换.在大部分情况下,两者执行同样的功能,不同的是CONVERT还提供一些特别的日期格式转换,而CAST没有这个功能. 既然CONVERT包括了CAST的所有功能,而且CONVERT还能进行日期转换,那么为什么需要使用CAST呢?实际上,这是为了ANSI/ISO兼容.CAST是ANSI兼容的,而CONVERT则不是. 语法: CA