精华内容
下载资源
问答
  • 8086汇编语言

    2021-01-19 17:48:53
    8086汇编语言 经过我这几年的工作,发现不学点底层的知识感觉心里很慌,我是看小码哥的视频学习的,发现有很多不错的知识要点,就在博客记录一下。写博客就拿出一种态度来不做抄袭别人知识的事情,只写自己亲手验证...

    8086汇编语言

    经过我这几年的工作,发现不学点底层的知识感觉心里很慌,我是看小码哥的视频学习的,发现有很多不错的知识要点,就在博客记录一下。写博客就拿出一种态度来不做抄袭别人知识的事情,只写自己亲手验证过的问题,下面就是一些概念,先这样写,以后我会慢慢优化;

    语法格式&关键字说明

    1.mov ds:[0h],ax  如果你不写段地址,段地址的默认地址就是数据地址;mov [0h],ax 如果你想访问数据段里的某一个内容,你可以这样写;默认前面就是ds:

    2.寄存器是寄存器,内存是内存;寄存器访问本来就快,它是在CPU内部

    3.把数据放放到数据段,与放到全局变量是一样的;把返回值放到ax寄存器中;ax是16位能用寄存器;eax是32位的寄存器;rax是64位的寄存器;

    4.word ptr  中的ptr指的是pointer;可以用寄存器,全局变量来传参;

    5.ios 里面的传参是把参数放先放到寄存器中,寄存器不够用了,再放到栈里面,因为寄存器快

    6.16位的cpu 栈一定会操作两个字节的;

    7.bp是辅助栈使用的;不能直接使用sp+2  ,可以使用bp+2

    8.在以前的认知中局部变量与参数 在函数调用完毕之后会自动消毁、销毁就是变成垃圾内存了;C语言里面的销毁是占用的内存变成垃圾内存了,不管那个内存了,以后别人要用的话可以拿去去用;这就相当于内存被释放了;不是内存被迫害坏;

    9.函数调用前与函数调用后栈应该是一样的;add esp ,8 做了栈平衡

    10.; 打印字符串    
        print:    

        ; ds:dx告知字符串地址    
        mov dx, offset string
        mov ah, 9h
        int 21h
        ret 

    函数的局部变量:

    1.局部变量不是你要多少个就分配多少个内存,而是一次性分配一定的空间,分配多少个由我们来定,局部变量是在栈区不在数据区,数据区一般是存放全部变量、静态变量、常量;

    2.先把sp的值赋值给bp mov bp,sp 然后再减10 , sub sp,10;如果sp不减10可能会被覆盖,只要sp指针一站在sp-10处,sp-10前面的空间别人就碰不了了,我们一调用call ,就会调用push操作把下一条要执行的执令入栈;如果局部变量往栈里面放数据直接用内存指令就好了;bp+8是参数 bp-8是局部变量;局部变量是夹在bp与sp之间

    3.ax就是拿来给你赋值的,与函数返回值的,不用会保护,你保护是没有用的,ax是给别人用的;保护就要保护ax以外你要用的寄存器

    4.寄存器是哪个函数都能用的,所以要保护一下si、di、dx、cx,保护你用到的寄存器

    5.汇编里面是不允许内存对内存,一定要通过寄存器

    函数的调用流程一:

    ; 1.push 参数
    ; 2.push 函数的返回地址
    ; 3.push bp (保留bp之前的值,方便以后恢复)
    ; 4.mov bp, sp (保留sp之前的值,方便以后恢复)
    ; 5.sub sp,空间大小 (分配空间给局部变量)
    ; 6.保护可能要用到的寄存器
    ; 7.使用CC(int 3)填充局部变量的空间  

    ; 8.--------执行业务逻辑--------      

    ; 9.恢复寄存器之前的值
    ; 10.mov sp, bp (恢复sp之前的值)
    ; 11.pop bp (恢复bp之前的值)
    ; 12.ret (将函数的返回地址出栈,执行下一条指令)
    ; 13.恢复栈平衡 (add sp,参数所占的空间)

    下面是函数调用代码

    assume ss:stack ds:data cs:code 

    stack segment  
        db 60 dup(0)
    stack ends  

    data segment 
        db 20 dup(0)
    data ends  

    code segment 
     start:  
        mov ax,stack
        mov ss,ax
        mov ax,data
        mov ds,ax 
        
        push 1122h ;can shu
        push 3344h ;can shu
        call sum

        mov ax,4c00h
        int 21h   ;int 是interrupt 的缩写
         
        sum: 
            push bp
            mov bp,sp
            sub sp,10  
            
            push si
            push di
            push dx

            mov ax,0cccch
            mov bx,ss 
            mov es,bx
            mov di,bp
            sub di,10
            mov cx,5
            rep stosw 


            ;=======函数内部的业务逻辑    begin =====
            mov  word ptr ss:[bp-2],5566h     ;局部变量
            mov  word ptr ss:[bp-4],6677h   ;局部变量  
            mov ax,ss:[bp-2]
            add ax,ss:[bp-4]
            mov ss:[bp-6],ax
            
            mov ax,ss:[bp+4]
            add ax,ss:[bp+6]  
            add ax,ss:[bp-6]   
             ;=======end =====

             pop dx

             pop di
             pop si

     
            push 2
            push 1
            call minus
            
            mov sp, bp
            pop bp
            
         ret 4  ;内平栈  
         
         minus: 
             push bp
             mov bp,sp
             sub sp,10 
             
             push si
             push di
             push dx

            mov ax,0cccch
            mov bx,ss 
            mov es,bx
            mov di,bp
            sub di,10
            mov cx,5
            rep stosw 

             
             mov  word ptr ss:[bp-2],3   
             mov  word ptr ss:[bp-4],4
             
             mov ax,ss:[bp+6] 
             sub ax,ss:[bp+4]
             mov ax,ss:[bp-4]
             sub ax,ss:[bp-2]

             pop dx

             pop di
             pop si
        
             mov sp,bp
             pop bp
         ret 4  ;内平栈  
      
    code ends  
    end start

    局部变量的填充:

    1.windows平台的局部变量填充用的是cc,为什么要填充那?防止程序异常的时候,比如说用户做了违法的操作(这个应用不允许的一些操作)cs:ip; 如果牵扯到内存copy的时候就用到es:di了,左边的内存拷贝到右边的内存一般会用到es:di ;32位它所有段都是一样的,es,ss,ds都是一样的大家公用一个段不像8086两个16位合成一个20位段地址:偏移地址

     

     

     

     

    展开全文
  • 汇编语言伪指令   指示性语句中的位操作命令, 称为伪指令 1. 数据定义伪指令 (1). 格式 [变量名] 位操作 操作数1, 操作数2 ... 定义数据伪操作有以下五种 伪操作 作用 变量占据内存 DB 定义变量为字节...

    汇编语言伪指令

      指示性语句中的位操作命令, 称为伪指令

    1. 数据定义伪指令

    (1). 格式
    [变量名] 位操作 操作数1, 操作数2 ...
    

    定义数据伪操作有以下五种

    伪操作作用变量占据内存
    DB定义变量为字节类型8位
    DW定义变量为字类型16位
    DD定义变量为双字类型32位
    DQ定义变量为四字类型64位
    DT定义变量为十字街类型80位
    (2). 操作数

      数据定义伪操作后的操作数可以是常数、表达式或字符串

    举例

    DATA DB 21H, 34H ;定义包含两个元素的字节变量DATA
    DATA2 DW ?		 ;为变量DATA2分配2字节的空间,初值为任意值
    
    (3). 重复操作符 DUP
    [变量名] 数据定义伪操作 n DUP (初值, ...)
    

    圆括号中为重复的内容, n为重复次数

    2. 符号定义伪指令

    名字 EQU 表达式
    

    举例

    ;定义
    CR EQU 0DH		 ;表示 CR = 0DH
    TEN EQU 0AH		 ;表示 TEN = 0AH
    
    ;程序段使用
    MOV AL, TEN		 ;AL <- 0AH
    

    如果要对EQU定义过的符号重复定义, 使用 “=” 伪指令

    3. 段定义伪指令

    段名 SEGMENT [定位类型] [组合类型] ['类别']
    ...
    段名 ENDS
    
    (1). 定位类型

      告诉汇编程序如何确定逻辑段的地址边界

    定位类型说明
    PARA(默认定位类型)逻辑段从1个节(16字节定义为1个节)的边界开始, 段起始物理地址为 XXXX0H
    BYTE逻辑段从字节边界开始, 即可以从任何地址开始, 本段的起始地址紧接在前一个段的后面
    WORD逻辑段从字边界开始, 即本段的起始地址必须是偶数
    PAGE逻辑段从页(256字节定义为1页)边界开始, 段起始物理地址为 XXX00H
    (2). 组合类型

      组合类型主要用在多模块程序中。组合类型用于告诉汇编程序, 当一个逻辑段装入存储器时, 它与其他段如何进行组合。

    组合类型说明
    NONE(默认定位类型)本段与其他逻辑段不组合, 即对不同程序模块中的逻辑段, 即使具有相同的段名, 也分别作为不同的逻辑段装入内存而不组合
    PUBLIC具有相同段名的逻辑段在汇编时, 组合在一起
    STACK堆栈段具有相同的段名时, 组合在一起
    COMMON对于不同程序模块中用COMMON说明的同名逻辑段, 连接时装入同一个地址, 即每个逻辑段重叠在一起, 长度等于原来最长的, 重叠部分的内容是最后一个逻辑段的内容
    MEMORY当几个逻辑段连接时, 本逻辑段定位在地址最高地方, 多个MEMORY段, 将第一个遇到的作为MEMORY段, 其余的为COMMON段
    AT 表达式将表达式的值多为定位段地址
    (3). 类别

      用单引号括起来的字符串,如’CODE’、'STACK’等,其作用是:当几个程序模块进行连接时,将具有相同别名的逻辑段装入连续的内存区域,类名相同的逻辑段按先后顺序排列,没有类名的逻辑段与其他无类别的逻辑段一起连续装入内存。

    4. 设定段寄存器伪指令

    ASSUME 段寄存器名:段名,[段寄存器名,段名 ...]
    

      ASSUME伪指令用于向汇编程序说明定义的逻辑段属于何种类型的逻辑段

    CODE SEGMENT PARA PUBLIC 'CODE'
    	ASSUME CS:CODE, ES:EDATA, DS:DATA, SS:STACK
    	MOV AX, DATA
    	MOV DS, AX	;将数据段的段地址复制到DS寄存器
    	MOV AX, EDATA
     	MOV ES, AX	;将附加段的段地址复制到ES寄存器
    	MOV AX, STACK
     	MOV SS, AX	;将堆栈段的段地址复制到SS寄存器
    	...
    CODE ENDS
    
    
    

    5. 过程定义伪指令

      将具有某种功能的程序段看作一个过程(即子程序),它可以被别的程序调用(CALL)

    过程名 PROC NEAR/FAR
    	...
          RET
    过程名 ENDP
    

    6. 宏定义伪指令

    宏名 MACRO [形式参数, ...]
    	宏体
    ENDM
    

    举例:两个数适合的宏定义和宏调用

    DADD MACRO X, Y, Z
    	MOV AX, X
    	ADD AX, Y
    	MOV Z, AX
    ENDM
    ...
    DADD DATA1, DATA2, SUM
    

    7. 举例

    • 从键盘输入一个字符串,并输出该字符串
    DATA SEGMENT WORD PUBLIC 'DATA'       
    	ORG 00H    
    	CONTENTS DB 50, 0, 50 DUP (00h)    ;字符串缓冲区
    DATA ENDS
    EXTRA SEGMENT WORD PUBLIC 'EXTRA'
    EXTRA ENDS
    CODE SEGMENT WORD PUBLIC 'CODE'    
    	INITIIALIZE PROC    	;用来初始化段寄存器的过程    
    		MOV AX, EXTRA          
    		MOV ES, AX              
    		MOV AX, DATA        
    		MOV DS, AX        
    		RET    
    	INITIIALIZE ENDP    
    	TERMINATE PROC        	;用来退出程序的过程
    		MOV AH, 4CH        
    		INT 21H          	;因为程序直接退出, 可以不需要加RET
    	RET    
    	TERMINATE ENDP      
    	PRINTLN PROC        	;换行的过程
    		PUSH AX        		
    		PUSH DX        		;过程中要用到这两个寄存器, 先把原来的值存到栈里
    		MOV AH, 2        	;功能号2是字符显示
    		MOV DL, 0DH        	;DL寄存器存放打印字符, 这里是0D是换行的意思
    		INT 21H        		;中断操作, 进行打印字符
    		MOV DL, 0AH        	;0A是光标指向第一个字符的意思
    		INT 21H        		;中断操作
    		POP DX        	
    		POP AX        		;将原来的值再放回对应的寄存器
    		RET    				;过程结束, 返回
    	PRINTLN ENDP      
    	INPUT_STRING MACRO STRING_BUFFER_ADDRESS	;字符串输入过程   
    		PUSH DX        					 
    		PUSH AX               			 
    		MOV DX, OFFSET STRING_BUFFER_ADDRESS	;字符串缓冲区的偏移地址放到DX寄存器    
    		MOV AH, 0AH      				 ;功能号是0AH表示字符串输入  
    		INT 21H        					 ;中断操作, 输入字符串
    		CALL PRINTLN        			 ;输入结束, 调用换行过程
    		POP AX        				
    		POP DX      		
    	ENDM    
    	OUTPUT_STRING MACRO STRING_BUFFER	 ;字符串输出过程        
    		PUSH CX        	
    		PUSH BX               
    		PUSH DX        
    		PUSH AX        
    		XOR CX, CX                  	 ;清空CX值
    		MOV BX, OFFSET STRING_BUFFER     ;获取字符串缓冲区首地址   
    		MOV CL, BYTE PTR [BX+1]          ;获取字符串长度, 存入CL  
    		ADD BX, 2        			 	 ;BX = BX + 2
    		ADD BL, CL             			 ;BL = BL + 2
    		MOV BYTE PTR[BX], 0DH            ;将换行符存入偏移地址为BX内容的内存
    		INC BX         					 ;BX = BX + 1
    		MOV BYTE PTR[BX], 0AH            ;将0AH符存入偏移地址为BX内容的内存     
    		INC BX        
    		MOV BYTE PTR[BX], '$'      		 ;结尾放入$  
    		MOV DX, OFFSET STRING_BUFFER     ;将字符串缓冲区地址放入DX
    		ADD DX, 2        				 ;DX指向输入内容的第一个位置
    		MOV AH, 09H        				 ;DOS软中断, 09H表示字符串显示
    		INT 21H        					 ;中断
    		POP AX        
    		POP DX        
    		POP BX        
    		POP CX      
    	ENDM    
    	ASSUME CS:CODE, ES:EXTRA, DS:DATA        
    	START:            
    		CALL INITIIALIZE    			 ;调用初始化过程  
    		STRING_BUFFER_ADDRESS = STRING_BUFFER	;获取内容地址               
    		INPUT_STRING STRING_BUFFER_ADDRESS	;输入字符串          	             
    		OUTPUT_STRING STRING_BUFFER      ;显示字符串              
    		CALL TERMINATE
    CODE ENDS        
    	END START
    
    展开全文
  • MKStudio又称8086汇编语言编译器,是一款好用的单片机与微处理器集成开发环境,主要用于编程语言的调试操作,软件支持寄存器、内存和外设接口芯片的非编程读写操作,支持常用的 INT 21h 功能调用,除此之外,软件还...

    MKStudio又称8086汇编语言编译器,是一款好用的单片机与微处理器集成开发环境,主要用于编程语言的调试操作,软件支持寄存器、内存和外设接口芯片的非编程读写操作,支持常用的 INT 21h 功能调用,除此之外,软件还可以用于D/A 输出、串行数据、定时/计 数器、输入输出等实验中输出波形或信号的测量,软件体积小巧,操作简单,有需要的用户快快下载体验吧。

    51b9d453fb76f4f0797cd2f012d9e703.png

    安装教程

    1、双击“MKStudioSetup.exe”进入到软件安装向导

    51b9d453fb76f4f0797cd2f012d9e703.png

    2、下一步出现协议,选择我同意

    1c9796abe96ce4b23f0632ede4a999f1.png

    3、选择软件安装目录,默认为“C:\MKStudio”

    ef54fe71ff7b6337c30305a5ace317e4.png

    4、选择是否创建桌面图标快捷方式

    385c3fc15a0daeb0ecb5c4247373142d.png

    5、继续下一步安装就可以了

    使用说明

    1、在首次运行或检测不到实验系统时弹出设置通信端口对话框,请确保实验装置与PC正确连接,并己打开实验装置电源,使其进入在待命状态。这里选择“硬件联机调试”,软件开始检测设备,若联机成功则提示“设备检测成功”,单击“完成”进入MKStudio主界面,状态栏显示“联机调试”:当实验系统硬件或状态异常时,会弹出“通信出错”的信息框,请检查系统工作状态及通信电缆连接情况后重试。

    2、根据程序设计使用指令的不同,单击菜单栏“设置”一“设置工作方式”项打开对话框,选择需要使用的目标CPU型号,因本实验例程仅使用16位指令编程,所以将目标CPU型号设置为“8086/8088”,以使寄存器窗口采用16位方式显示,最后单击“确定”按钮保存设置。

    软件特色

    1、MKStudio提供了强大的编辑功能

    2、可以帮助用户在编辑系统命令的时候更加轻松

    3、打开软件就可以看到工作窗口

    4、内置两个通信端口设置,可以选择硬件端口

    5、提供很多硬件设备连接到软件

    6、支持快捷代码助手,方便您输入汇编命令

    7、支持一个汇编格式模板, 提高编辑前期的效率

    8、MKStudio也是可以选择8位端口写语句

    9、16位端口读语句也是可以找到的

    10、提供了文件管理端口,轻松配置汇编的内容

    11、支持一个寄存器内容查看窗口

    展开全文
  • 一、功能介绍 输入学生总数。 录入学生信息(包括姓名、班级、学号、成绩(十进制,精确到1位小数))。 可以统计平均成绩。 可以自主选择三种方式(学号、成绩、学号和成绩),并进行排序显示。...

    一、功能介绍

    1. 输入学生总数。
    2. 录入学生信息(包括姓名、班级、学号、成绩(十进制,精确到1位小数))。
    3. 可以统计平均成绩。
    4. 可以自主选择三种方式(学号、成绩、学号和成绩),并进行排序显示。
      采用经典冒泡排序方法,重复扫描要排序的元素列,依次比较两个相邻的元素,完成元素列的升序或降序排列。本程序中学号采用升序排列,分数采用降序排列。
    5. 可以统计不及格、60-70、70-80、80-90、90-100各分数段的人数。
    6. 可选择再次重新运行程序或结束程序运行。

    二、子程序调用图

    在这里插入图片描述

    三、运行结果截图

    展开全文
  • 8086汇编语言程序设计–已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正元素的个数 DATAS SEGMENT BUF DB 12,-12,13,-13,1,2 COUNT DB ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS ...
  • 达到远转移 注意ret与jmp的区别,jmp可以通过标号,内存,寄存器三种方式实现转移,而ret是通过栈来实现转移 由于是使用栈中的数据,所以执行RET或者RETF的时候,会触发出栈操作(等同于POP),在8086这种16位CPU下...
  • 8086汇编语言-LOOP指令

    2021-01-04 23:15:55
    如果cx不等于0 3.ip=ip+偏移量(8086下:-128到+127) 下面的代码会打印出3 #include #include int main() { int a = 0; _asm { mov ecx,3; mov eax, 0 abc:inc eax loop abc mov a,eax } std::cout ;...
  • 8086汇编语言-LEA指令

    2021-01-04 23:11:24
    最后ECX中的值是十进制117,因为‘u’的ascii码是117D 内联汇编中,下面打印结果是相同的,所以可以认为LEA等同于取地址符号 int main() { int a = 666; int* b = &a; int c = 0; _asm { lea eax,a; ...
  • MKStudio又称8086汇编语言编译器,是一款好用的单片机与微处理器集成开发环境,主要用于编程语言的调试操作,软件支持寄存器、内存和外设接口芯片的非编程读写操作,支持常用的 INT 21h 功能调用,除此之外,软件还...
  • 对于8086CPU数据寻址的多种方式:立即数寻址、寄存器寻址、存储器寻址(三大类)进行了相关的介绍!
  • 字符串输入   字符串输入通过调用DOS功能的0AH号功能实现,需要用户指定一个输入缓冲区存放输入的字符串。缓冲区一般定在数据段,其定义格式如下 字节位置 作用
  • 8086汇编语言:多位数据进行输出(点这里哦!(*^_^*)) 对于运算版本,输入参数cx中保留着N的值,ax为输出参数 这段代码的短板在于乘法运算中的寄存器al,因为它是8位寄存器,所以能接受的最大值为255;但又因为...
  • 不合法,跳到EROR,下同,EROR标号的功能相同,最终都会跳到标号EROR,之所以存在多个EROR0或EROR1之类,是因为汇编语言的特性需要中转,下面会解释 JMP READ2;以下的READ整合起来的功能是判断天数是否合法,比如:...
  • 满意答案zkfqg8852推荐于 2018.08.26采纳率:41%等级:12已帮助:12211人data segmentchars db 200 dup(?) ;开辟200字节的缓冲区data ends;---------------------------------code segmentassume cs:code,ds:data...
  • 8086汇编语言:多位数据进行输出(点它) 三、具体代码: DATAS SEGMENT CRLF DB 0AH,0DH,"$";回车换行 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:...
  • 对于8086CPU中14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW(标志寄存器);进行了详尽的介绍!
  • 学习任何编程语言都免不了要跨越HelloWorld这道坎,面向机器的汇编语言与面向过程/对象的高级语言不同,编码过程中对寄存器、内存的分配等细节都需要编程人员去关心;而高级语言程序如C语言、C++,即使你不知道...
  • 其核心操作是乘法,在8086汇编语言中,乘法的特性就是——将因数放置在8位寄存器al中,运算的积放置在ax中;根据此特性,该函数可以接收的上限是255x10+9=2559。 综上可知,整个代码所能接受的上限是——2559。 验证...
  • 输入一个N值,换行输出S=1*2+2*3+3*4+……+N*(N+1)的值!代码演示,注释详细!
  • 8086汇编语言期末复习

    2021-07-10 20:03:57
    第一章 初识汇编语言 1、程序语言分类(机器语言、汇编语言、高级语言) 汇编语言:使用指令助记符,符号地址,标号等符号书写的语言 2、汇编语言意义 与硬件关系密切,硬件类课程和操作系统课程的先行课 有利...
  • 汇编语言程序和高级语言程序一样,有顺序、分支、循环、子程序四种结构形式。计算机程序在执行过程中,可以改变程序的执行顺序,根据一定的条件进行转移,使程序完成更复杂的功能。汇编语言提供了无条件转移指令和...
  • 8086CPU的标志寄存器中的OF、DF、IF、TF、SF、ZF、AF、PF、CF标志位进行了相关的介绍!
  • 8086CPU是16位的结构,在CPU内部一次性处理、存储、传输的数据为16位;但是8086CPU有20位地址总线,怎么由16位的结构产生20的地址呢?
  • ​ 这学期要学习8086汇编,选择汇编的环境折腾了好几天,尝试过使用吾爱破解的OD反汇编工具【1】查看寄存器的状态,并进行的简单的汇编指令编写,但其界面复杂,对新手极其不友好,使用了几天就放弃了。...
  • 该指令为比较且修改,用于各种高级语言的CAS(compare and swap) 格式:cmpxchg 参数1,参数2 参数1:只能是ECX,或者CX,或者CL 参数2: 当参数1是ECX的时候,参数2只能是EDX 当参数1是CX的时候,参数2只能是DX 当...
  • 碎碎念:这部分内容是对8086数据段汇编语言格式的总结,网上的资源较少,书上的讲解也过于零散,所以就结合网络资源和课本总结了一下这部分内容。 最近发博客会比较频繁,本周要完成的内容也很多。 不重要的文字:...
  • 对于8086CPU的40个引脚进行了相关分组介绍!
  • 图 1 程序运行示意(3位整数、负数) 图 2 程序运行示意(4位正数、负数) ... 图 3 程序运行示意(边界数据) ... string0 db "Enter a decimal number(-32768~32767)", 0ah, 0dh, '$' ...
  • 第四章 8086汇编语言程序设计;几个概念;1. 3种语言;2. 汇编程序的作用;3. 汇编语言程序的上机与处理过程; 汇编语言上机过程D:>EDIT ABC.asmD:>MASM ABC 有语法错,回EDIT下改该程序D:>LINK ABC 有错,回在...
  • 指令:计算机用以控制各部件协调动作的命令,由英文字母组成,称助记符 指令包含的信息: 1、执行什么操作 2、参加操作的数 3、操作数存在什么地方,通过什么方式找到 4、后继指令从何处取出 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 273,020
精华内容 109,208
关键字:

8086汇编语言