15-18节课

tip:cpu与外设直接传送字符的ASCII

这里很多笔记采取图片形式,因为ppt上有,而且都和前面比较类似,认真看了前面的现在的都能理解了,就不再手敲一边添加帮助理解的文字了。

标志寄存器传送指令

标志送AH指令:    LAHF

执行操作:              (AH) <- (FLAGS的低字节)

AH送标志寄存器指令:   SAHF

执行操作:                         (FLAGS的低字节) <-  (AH)

标志进栈指令:    PUSHF

执行操作:            (SP)  <-  (SP) - 2

( (SP)+1,  (SP) )  <-  (FLAGS)

 

标志出栈指令:    POPF

执行操作:            (FLAGS)  <-  ( (SP)+1,  (SP) )

(SP)  <-  (SP) + 2

影响标志位

例:

mov AX, 37C8H

SAHF; AH ->Flags的低8位

问 CF,PF的值为?

解:根据标志位寄存器

可知,CF=1,DF=1

例:

MOV AX, 1234H

ADD AX,5678H

push AX

popF

问CF,OF的值为多少?

解:同上,考虑栈的存储是高地址向低地址延伸

CF = 0,OF = 1

类型转换指令

CBW          AL -> AX

执行操作: 若(AL)的最高有效位为0,则(AH)= 00H

若(AL)的最高有效位为1,则(AH)= FFH

CWD         AX -> (DX,AX)

执行操作:若(AX)的最高有效位为0,则(DX)= 0000H

若(AX)的最高有效位为1,则(DX)= FFFFH

例:(AX) = 0BA45H

CBW              ; (AX)=0045H

CWD              ; (DX)=0FFFFH  (AX)=0BA45H

               *  无操作数指令

               *  隐含对AL AX 进行符号扩展

               *  不影响条件标志位

 1.字节扩展指令

格式:CBW

功能:将AL的符号位扩展到AH

例:

MOV AL,9AH

CBW;AX=FF9AH

2.字扩展

格式:CWD

功能:将AX的符号位扩展到DX

例:

MOV AX,8ACDH

CWD;DX = FFFFH

算术指令

·   加法指令

ADDADCINC

·   减法指令

SUBSBBDECNEGCMP

·   乘法指令

MULIMUL

·   除法指令

DIVIDIV

·   十进制调整指令

DAADAS

AAAAASAAMAAD

加法指令

加法指令:    ADD  DST, SRC

执行操作:    (DST)  <-  (SRC) + (DST)

带进位加法指令:  ADC  DST, SRC

执行操作:    (DST)  <- (SRC) + (DST) + CF

加1指令:        INC  OPR

执行操作:      (OPR)  <-  (OPR) + 1

INC指令不影响CF标志外,均对条件标志位有影响。

1.ADD

格式:ADD DST, SRC

功能:DST<-DST+SRC

2.ADC

格式:ADC DST,SRC

功能:DST<-DST+SRC+CF

带进位的加法

3.加1指令

格式:INC OPRD(OPRD不能为立即数)

功能:OPRD<-OPRD+1

减法指令

1.求补指令

格式:NEG OPRD

功能:OPRD<-   -(OPRD);OPRD不能为立即数

2.比较指令

格式:CMP OPR1,OPR2

功能:OPR1 - OPR2 只影响Flags

乘法指令

1.无符号数乘法

1.字节乘法格式

mul SRC

功能:AL*SRC ->AX

SRC为字节操作数

2.字乘法格式(SRC字类型)

mul SRC

功能:AX*SRC ->(DX,AX)

计算 27*15=?

mov AL,27

mov BL,15

mul BL

AL*BL ->AX

2.有符号乘法

1.字节乘法

imul SRC    ;AL*SRC ->AX

2.字乘法

imul SRC ;AX*SRC -> (DX,AX)

mov AL,-2

AL = FEH

有符号数:-2

无符号数:254

-17D在8位机上的补码为EFH

在16位机上表示无符号数的十进制数为65519

十六进制为FFEEH

除法指令

除法中余数的符号与被除数一致

mov AX,-5

mov BL,2

IDIV BL

AX:FFFEH

AX/BL(商送AL,余数送AH)

mov AX,-5

mov BL,2

DIV BL

AX = 017DH

例题:

1.写出计算(25*18-76)/ (-19)的指令序列

mov AL,25

mov DL,18

imul DL

SUB AX,76;AX<-AX-76

MOV BL,-19

IDIV BL

2.(2518*1988-2569)/1182

mov AX,2518

mov BX,1988

imul BX;(DX,AX)<-2518*1988

SUB AX,2569

SBB DX,0;结果在(DX,AX)中

mov BX,1182

IDIV BX

3.用8086汇编指令实现:

(2258+1983)*2205-1768*271

解:

mov AX,2258

ADD AX,1983

mov BX,2205

imul BX;(DX,AX)

mov BX,DX

mov CX,AX

mov AX,1768

mov BX,271

imul BX;(DX,AX)<-1786*271

SUB CX,AX

SBB BX,DX;结果在(BX,CX)

19-20节课

十进制和二进制的除法上机操作

十进制:12345678  /  2811

mov ax,1234

mov bx,10000

mul bx  ;(dx,ax)=12340000

add ax,5678

adc dx,0   ;(dx,ax)=12345678

mov bx,2811

div bx

二进制: 12345678  /  2811

mov ax,5678H

mov dx,1234H

mov bx,2811H

div bx

十进制调整指令

BCD码:用二进制编码的十进制数,又称二--十进制数

压缩的BCD码:用 4 位二进制数表示 1 位十进制数

例:( 59 )10 =( 0101 1001 )BCD

非压缩的BCD码:用 8 位二进制数表示 1 位十进制数

例:( 59 )10 =( 0000 0101   0000 1001 )BCD

例:写出( 3590 )10的压缩 BCD 码和非压缩BCD码,并分

        别 把它们存入数据区 PAKED UNPAK

压缩BCD:  ( 3590 )10( 0011 0101 1001 0000 )BCD

非压缩BCD

( 3590 )10( 00000011 00000101 00001001 00000000 )BCD

非压缩 

1.AAA:非压缩BCD码加法调整指令

格式:AAA

功能:对两个非压缩BCD码相加存于AL中的和进行十进制调整

调整规则:若AL的低4位大于9或AF=1,则AL+6,AH+1,CF与AF置1,AL的高4位清零;否则,CF和AF清零。(因非压缩BCD码,故适用于被加数与加数为1位数的加法)

例1:  7+9=?

MOV  AL,7

ADD  AL,9  ;AX=0010H  ,AF=1

AAA          ;AX=0106H  ,CF=1   AF=1

2.非压缩BCD码减法调整指令AAS

格式:AAS

功能:对两个非压缩BCD码相减存于AL中的差进行十进制调整

调整规则:若AF=1,则AL-6 ,AH-1 ,CF=1 ,截取AL低4位;否则,只截取AL低4位。

例1:

MOV  AL,2

SUB   AL,5   ;AX=00FDH ,AF=1,CF=1

AAS            ;AX=FF07H ,AF=1,CF=1

3.非压缩BCD乘法调整指令AAM

格式:AAM

功能:对两个非压缩BCD码数相乘存于AX中的积进行(十进制)非压缩BCD码的调整。

调整规则:AX÷10的商存放在AH中,AX÷10的余数存放在AL中。

注:该指令影响PF、SF、ZF。

例:MOV  AL,7

MOV  BL,8

MUL  BL    ;AX=0038H

AAM        ;AX=0506H

4.非压缩BCD码除法调整指令AAD

格式:AAD

功能:对存于AX中的非压缩BCD码被除数(两位十进制数)进行十进制调整。

调整规则:AH×10+AL →AX

(特别说明:BCD码除法是先对被除和进行调整,然后再去做除法。)

例:78 ÷9=?

MOV  AX,0708H

AAD                ;调整后,AX=004EH

MOV  BL,9        ;执行78 ÷9

DIV   BL           ;AX=0608H  (商:8 在AL ,余数:6在AH中)

压缩

1.压缩BCD码加法调整指令

格式:DAA

功能:对两个压缩BCD码数(两位数的十进制数,带尾符H)相加存于AL中的和进行十进制调整。(影响:CF、PF、AF、ZF、SF)

调整规则:若AL中的低4位>9,或AF=1,则AL+06H ,AF=1

若AL中的高4位>9,或CF=1,则AL+60H,CF=1

例:计算十进制数:38+97=?

MOV  AL,38H

ADD  AL,97H ;AX=00CFH  AF=0,低4位为F,大于9 高4位为C,也大于9

DAA           ;AX=0035H   AF=1,CF=1

 2.压缩BCD码减法调整指令

格式:DAS

功能:对两个压缩BCD码数(两位数的十进制数,带尾符H)相减存于AL中的差进行十进制调整。(影响:CF、PF、AF、ZF、SF)

调整规则:若AL中的低4位>9,或AF=1,则AL-06H ,AF=1

若AL中的高4位>9,或CF=1,则AL-60H,CF=1

例:计算十进制数:38-97=?

MOV  AL,38H

SUB  AL, 97H ;AX=00A1H  AF=0, AL的高4位为A,大于9,CF=1

DAS            ;AX=0041H   AF=0,CF=1

循环指令

格式:LOOP  标号

功能: 循环次数先送CX,然后执行指令LOOP 标号 时,先CX-1送CX,若CX不等于0 转标号处执行,否则执行循环指令的后续语句。

例:计算s=1+2+...+100

mov cx,100

mov s,0

mov ax,1

AA1:add s,ax

inc ax

loop aa1

例:计算s=1*2+2*3+3*4+...

mov cx,10

mov s,0

mov ax,1

mov bx,2

aa1:mul bx

add s,ax

mov ax,bx

inc bx

loop aa1

21-22节课

DOS中断调用

一.常用的DOS中断    INT  21H

1.DOS中断的执行步骤(分3步)

第一步:置入口参数

第二步:功能号送AH

第三步:执行 INT  21H

(1)1号功能

格式:MOV  AH, 1

INT  21H

功能:接收键盘输入一个ASCII字符值保存在寄存器AL中

(2)2号功能

格式:MOV  DL, 字符的ASCII值

MOV  AH,  2

INT 21H

功能:屏幕上输出DL中的ASCII字符

上机例:

MOV  DL, 42H   ; MOV  DL, ‘B’

MOV  AH,  2

INT  21H

执行上述3条指令屏幕显示大写字母‘B’

(3)5 号功能

格式:MOV  DL, 字符的ASCII值

MOV  AH,  2

INT 21H

功能:在打印机上输出DL中的ASCII字符

上机例:

MOV  DL, 42H   ; 等价指令  MOV  DL, ‘B’

MOV  AH,  5

INT  21H

执行上述3条指令在打印机输出大写字母‘B’

(4)9号功能

格式:  LEA  DX,  字符串变量名

MOV  AH,  9

INT  21H

功能:在屏幕上显示一串字符。字符串以$ 作为结束符

(5)10号功能( 0AH 号功能)

格式: 格式:  LEA  DX,  字符串变量名

MOV  AH,  10

INT  21H

功能:接收键盘输入一串字符存入到指定的“ 字符串变量名

”缓冲区中。

注:变量定义格式如下

变量名   DB  输入的最大数, 实际数, 数字 DUP(‘$’)

例:  A   DB  20, 0, 20 dup(‘$’)

解释:定义了一个变量缓冲区A, 最多能输入20个字符,刚开始输入数为0,20个字节空间初始值用’$’填充。

6)4CH号功能,即返回DOS

格式: MOV  AH, 4CH

INT  21H

功能:系统运行结束,返回DOS

补充命令

格式:SHR AL,CL

功能:AL逻辑右移CL位数

SHR AL,1;AL右移1位

MOV CL,3

SHR AL,CL;AL右移3位

dos命令分析 

数据段:

DATA segment

A DB 20,0,20 dup('$')

DATA ends

代码段:

code segment

assume cs:code,ds:DATA

start:mov AX,DATA

mov DS,AX

输入:

lea ax,a

mov ah,10

int 21h

显示回车:

mov dl,0dh

mov ah,2

int 21h

显示换行:

mov dl,0ah

mov ah,2

int 21h

输出刚输入的内容:

lea dx,a+2

mov ah,9

int 21h

结束:

mov ah,4ch

int 21h

code ends

end start

内存中的储存结构:解释了为什么是从a+2开始以及为什么只能输入最大值-2个数(包括了回车和字符串终止符'$'

二、DOS功能调用实验

实验题:键盘输入一串字符“I am a student.”,按回车键,屏幕显示回车换行后,重新显示该字符串。

C:\>EDIT  STRIN.ASM
DATA SEGMENT
A DB 20,0,20 DUP('$')
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATAMOV DS,AXLEA DX, AMOV AH,10INT 21HMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HLEA DX,A+2MOV AH,9INT 21HMOV AH,4CHINT 21HCODE ENDSEND START

经存盘,汇编、连接生成STRIN.EXE可执行文件,运行结果如下:

拆字输出数字方法

例:将寄存器AL中的压缩BCD码如何输出?

AL=39H     如何显示数字:3和9。

MOV  AL,  39H
MOV  CL, 4
SHR   AL, CL   ;将AL中的39H变成03H
MOV  DL,  AL
OR  DL, 30H
MOV  AH, 2
INT  21H     ;显示 ‘3’
AND  AL, 0FH  ;AL的高4位清零
MOV  DL,  AL
OR  DL, 30H
MOV  AH, 2
INT  21H     ; 显示 ‘9’

从键盘接收十进制数存入BX程序

思想:键盘与CPU是通过ASCII字符传送,即要把输入的数字字符转换成数字,下面程序段的算法思想是:( 例输入数字字符:374  输其它非数字字符退出(((0×10)+3) ×10+7) ×10)+4  ,即将字符’3’,’7’,’4’ 转成数值:374

    MOV  BX, 0                   NEW:MOV  AH, 1                   INT    21H                    SUB  AL,30HJL   EXITCMP  AL, 9HJG  EXIT
CBW
XCHG  AX, BX
MOV  CX, 10
MUL  CX
XCHG  AX, BXADD   BX, AXJMP  NEWEXIT: ………

利用8086宏汇编编程显示任意十进制数(<=32767,无符号数<=65535)的宏定义和调用程序清单:

多位数的算术运算实验

一、实验目的:通过本实验,让学生掌握非压缩BCD码与压缩BCD码算术运算(+ - × ÷)十进制调整指令的功能(指令:AAA、DAA、AAS、DAS、AAM、AAD),掌握算术运算(+ - × ÷)指令的功能。

二、实验内容

1、分别利用非压缩BCD码与压缩BCD码加、减法计算:

259778+68653=?  259778-68653=?

; 259778+68653=?

非压缩BCD加法

data segment
a db 8,7,7,9,5,2
b db 3,5,6,8,6,0
c db 6 dup(0)
data ends
code segment
assume cs:code,ds:data
start:mov ax,datamov ds,axmov cx,6mov si,0clcaa1:mov al,a[si]adc al,b[si]aaamov c[si],alinc siloop aa1mov si,5mov cx,6aa2:mov dl,c[si]or dl,30hmov ah,2int 21hdec siloop aa2mov ah,4chint 21hcode endsend start

非压缩BCD码减法 259778-68653=? 程序清单?将上述程序中程序行

adc  al, b[si]

aaa

改为如下:

sbb  al, b[si]

aas

259778+68653=?  压缩BCD加法 

data segment
a db 78h,97h,25h
b db 53h,86h,06h
c db 3 dup(0)
data ends
code segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov cx,3clcmov si,0aa1:mov al,a[si]adc al,b[si]daa mov c[si],alinc siloop aa1mov cx,3mov si,2aa2:mov dl,c[si]push cxmov cl,4shr dl,clor dl,30hmov ah,2int 21hpop cxmov dl,c[si]and dl,0fhor dl,30hmov ah,2int 21hdec siloop aa2mov ah,4chint 21hcode endsend start

注:压缩BCD码减法 259778-68653=? 程序清单?

将上述程序中程序行

adc  al, b[si]

daa

改为如下:

sbb  al, b[si]

das

2、利用DEBUG命令单步步执行命令T,通过查看寄存器内容,检验BCD码运算调整指令的功能。

(1)MOV AL,12H

SUB  AL, 5 ;AX=

AAS          ;AX=

(2)MOV AL,12H

SUB  AL,5   ;AX=

DAS           ;AX=

(3)MOV AL,2

SUB  AL,5  ;AX=

AAS          ;AX=

(4)MOV  AL,2

SUB  AL,5  ;AX=

DAS          ;AX=

(5)MOV AL,5

ADD  AL,7  ;AX=

AAA          ;AX=

(6)MOV  AL,5

ADD   AL,7  ;AX=

DAA           ;AX=

(7)MOV  AL,37H

ADD  AL,98H ;AX=

DAA            ;AX=

(8)MOV AL,37H

ADD AL,98H ;AX=

AAA          ;AX=

(9)MOV  AL,-3

MOV  BL,2

IMUL  BL  ;AX=

(10)MOV  AL,-3

MOV  BL,2

MUL  BL   ;AX=

(11)MOV  AX,-5

MOV  BL,2

IDIV  BL    ;AX=

(12)MOV  AX,5

MOV  BL,-2

IDIV  BL    ;AX=

(13)MOV  AX,-5

MOV  BL,-2

IDIV  BL   ;AX=

(14)MOV  AX,5

第23-24节课

逻辑运算指令

这里比较简单就放个图给大家理解

移位指令

逻辑左移

格式:SHL OPR,CNT

功能:最高位送CF,其余位向左移动,最低位依次补0

逻辑右移

格式:SHR OPR,CNT

功能:最低位送CF,其余位向右移动,最高位依次补0

算术左移

格式:SAL OPR,CNT

功能:同逻辑左移

算术右移

格式:SAR OPR,CNT

功能:最低位送符号位 ,最高位依次补最初符号位数值

循环左移

格式: ROL OPR,CNT

功能:最高位送CF和最低位,其余位左移

循环右移

格式:ROR OPR,CNT

功能:最低位送CF和最高位,其余位右移

带进位循环左移

格式:RCL OPR,CNT

功能:最高位送CF,CF的值送最低位,其余位左移

带进位循环右移

格式:RCR OPR,CNT

功能:最低位送CF,CF送最高位,其余位右移

关于移位指令的移位位数CNT的有关说明:CNT:清进位,CF=0;STC:进位置位,CF=1;CMC:进位取反

关于状态标志位FLags

1.状态标志(6个)

C、P、A、Z、S、O

2.控制标志(3个)

TF、IF、DF(方向)

CLD;DF=0

STD;DF=1

DF=0,地址为增方向,显示UP

DF=1,地址为减方向,显示DN

实验:12345+6789=?

DATA segment
A DB 8,1,1,8,2,7,9,0
B DB 9,6,5,1,1,8,8,0
C DB 8 DUP(0)
DATA ends
code segment
assume cs:code,DS:data
start: mov AX,DATAmov DS,AXmov Si,0mov cx,8clcaa1:mov al,a[si]adc al,b[si]aaamov c[si],acinc siloop aa1mov cx,8mov si,0aa2:mov dl,c[si]or dl,30Hmov ah,2int 21hdec siloop aa2mov ah,4chint 21hcode endsend start

AC=39H,显示39H

//显示3
push AX
mov CL,4
SHR AL,CL
mov DL,AL
or DL,30H
mov AH,2
int 21H
//显示9
pop AX
AND AL,0FH
mov DL,AL
or DL,30H
mov AH,2
int 21H
mov AH,4CH
int 21H

第25-26节课

串操作指令

串操作实验案例

一、【实验目的】本实验掌握字符串扫描指令SCAS的功能,充分理解串操作中涉及的DS、ES、SI,DI的使用方法;理解串操作前缀REP、REPE/REPZ、REPNE/REPNZ的使用方法;通过本实验起到举一反三,以达到抛砖引玉的作用,让大家掌握其它串操作指令的使用。

1.串传送指令MOVS(MOVSB,MOVSW)

2.串存入指令STOS(STOSB,STOSW)

3.从串取指令LODS(LODSB,LODSW)

4.串比较指令CMPS(CMPSB, CMPSW)

二、【实验内容】已知在内存缓冲区变量A处有一串字符串‘computer’,现通过键盘输入一个字符,通过对缓冲区变量A的字符串‘computer’,查找是否有输入的字符,如存在,屏幕显示’Y’,并显示输入的这个字符在‘computer’的序号;否则显示‘N’。

例:输入: r                        输入:w

       显示: Y                        显示:N     

              8

解释:因为字符‘r‘ 在‘computer’字符串中存在,并且位置为第8个,所以显示‘Y’, 8;而‘w’在‘computer’字符串中不存在,所以显示’N’。

outln  macro     ;定义宏指令outln, 用于显示回车和换行
mov dl,0dh       ;显示回车
mov ah,2
int 21h
mov dl,0ah       ;显示换行
mov ah,2
int 21h
endm             ;宏定义结束
data segment
a db 'computer'  ;内存变量a缓冲区字符串的定义
data ends
code segment
assume cs:code,es:data
start:mov ax,datamov es,ax    ;SCAS操作是对目标段查找,所以段地址送ESmov ah,1     ;键盘输入一个ASCII字符到AL中int 21hpush ax      ;输入在AL中的字符入栈保护outln        ;调用宏指令显示回车换行pop axmov cx,8     ;以下3条指令为执行串操作SCASB的准备lea di,acldrepnz  scasb  ;在CX不为0且没找到的情况下重复执行串查找指令scasbjnz  nofind   ;没找到,转标号nofindmov dl,'Y'   ;找到显示’Y’mov ah,2int 21houtln        ;显示回车换行mov dx,8sub dx,cx    ;利用CX定位字符与字符串的匹配位置值or dl,30h    ;显示位置值mov ah,2int 21hjmp over     ;转程序结束处
nofind: mov dl,'N'  ;没匹配显示’N’mov ah,2int 21hover: mov ah,4ch   ;程序结束INT 21Hcode endsend start

程序运行结果如下:

第27-28节课

转移指令

一、转移指令格式

JXXX   目标

功能:有条件或无条件转到目标处执行。

1.无条件转移指令格式

JMP   目标

功能:无条件转到目标处执行

SHORT(可省略)  ,  NEAR  PTR  , FAR  PTR (段间)

2.有条件转移指令

几个重要的英语单词

Above  高于;Below  低于; Not  不; Equal  等于

Zero   为零;  Great  大于  ;  Less  小于

S:负SF=1;   C:有进位  CF=1;

Equal= Zero

JE完全等价于JZ

3.无符号数比较

说明:-1表示字节无符数:255

      -1表示字无符数:65535

     -n 示字节无符数:256-n;表示字无符数:65536-n

高级语言      汇编语言

>              JA             (不小于低于,等价:JNBE)

>=      JAE/JAZ (不低于,等价:JNB)

<       JB   等价于:JNAE

<=      JBE      JNA

==             JE/JZ

<>(不等于)   JNZ/JNE

例:

MOV  AL, -2

CMP  AL, 45

JA  AA1

......

请问程序会转到AA1吗?  会

4. 有符号数比较

高级语言      汇编语言

>       JG  或  JNLE

>=      JGE  或 JNL

<        JL 或 JNGE

<=      JLE 或 JNG

==           JE/JZ

<>     JNZ/JNE

MOV  AL, -2

CMP  AL, 45

JG  AA1

......

请问程序会转到AA1吗?  不会

选择题:转移指令助记符JNA 等价的是( B   )

A、JNG     B、JBE    C、JNL     D、JMP

要求:编程完成S=1+2+3+…+100

程序:

    MOV  AX,0

    MOV  BX,1

    MOV CX,100

AA1:ADD AX, BX

(INC BX          )  戓填:ADD BX, 1

LOOP AA1

要求:编程完成S=2+4+6…+100 (100以内的偶数和)

MOV  AX,0

    MOV  BX,2

    MOV CX,50

AA1:ADD AX, BX

(INC BX

INC BX          )  戓填:ADD BX, 2

LOOP AA1

要求:S=1X2+2X3+3X4+…+10X11

MOV S, 0

MOV CX,10

MOV DL,1

MOV DH,2

AA1:MOV AL,DL

MOV BL,DH

MUL BL  ;1x2送到AX中

ADD S, AX

INC DL

INC DH

LOOP AA1

要求:计算S=1!+2!+…+5!

程序:

MOV S, 0

MOV CX, 5

MOV AX,1

MOV BX,1

AA1:MUL BX

ADD  S, AX

INC  BX

LOOP  AA1

课外作业:计算S=1^2+ 2^2+3^2+…+10^2

(结果:385),写出汇编代码

程序:

mov s,0

mov cx,10

mov ax,1

mov bx,1

aa1:mul bx

       add s,ax

       inc bx

       mov ax,bx

       loop aa1

循环指令

和转移指令类似

call指令

RET指令

汇编语言学习笔记(续)相关推荐

  1. 32位汇编语言学习笔记(45)--测试简单文件操作接口(完)

     这是<Assembly Language step by step programming with linux>书中的最后一个程序,也是全书中的最复杂的一个程序. 首先看一下这个程 ...

  2. MIPS汇编语言学习笔记23:if 语句分支指令

    C语言 #include<stdio.h> int main() {int i = 3;if (i < 5){printf("yes!\n");}else{pri ...

  3. MIPS汇编语言学习笔记07:打印双精度浮点数

    课程原视频: https://www.bilibili.com/video/BV19J411y7pA?p=7 程序功能: 设定两个双精度浮点型数据,将其相加后打印输出. 代码: .datamyDoub ...

  4. windows下32位汇编语言学习笔记

    windows下32位汇编语言学习笔记 第一章  第一章 背景知识 80x86处理器的存储器 4个数据寄存器 EAX,EBX,ECX,EDX EAX寄存器 所有API函数的返回值都保存在EAX里,注意 ...

  5. win32汇编语言学习笔记(三)

    汇编语言学习笔记(三) CH3.Windows汇编基础 .386 .model flat,stdcall option casemap:none 定义程序使用的指令集.工作模式 相应的还有:.8086 ...

  6. MIPS汇编语言学习笔记11:整数减法 (mult方法)

    任务:整数相乘,并输出打印. 代码: .dataintA: .word 5intB: .word 2 .textli $v0, 1lw $a1, intAlw $a2, intBmult $a1, $ ...

  7. 菜鸟的汇编语言学习笔记

    汇编语言学习笔记 1.1机器语言 计算机发展初期,人们都是用机器语言进行编程的,这也是人们能实现编程控制计算机的最低级别.那么机器语言是什么样子的呢?就是用0和1组成的一个串(形如011010101) ...

  8. Linux下汇编语言学习笔记12 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  9. Linux下汇编语言学习笔记65 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  10. Linux下汇编语言学习笔记13 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

最新文章

  1. 数据库基础笔记(MySQL)7 —— 存储引擎和视图 ( 完结撒花 )
  2. 网络数据包信息收集工具ferret-sidejack
  3. Essential fact about future of PhD studies
  4. Android MVP模式就是这么回事儿
  5. python垃圾回收 (GC) 机制
  6. day4 数组的初始化和练习
  7. 学科前沿技术专题第六章
  8. C++ IO 流简介
  9. 微软职位内部推荐-Software Engineer II-Search
  10. uefi linux开发环境,UEFI开发学习1 - Ubuntu下搭建UDK2018开发环境
  11. python123外汇兑换计算器_使用python+PyQt5 实现等额本金计算器
  12. Spring常用设计模式--抽象工厂模式
  13. 续:~英语 1038个词根 217个后缀!
  14. 在阿里云开源镜像站中下载centOS7
  15. 最常见绩效考核方法有哪些?5种有效方法介绍
  16. 电信 网通 铁通 DNS服务器IP地址
  17. 中职计算机公开课说课稿,(完整)中职职高幼教专业手工实践《剪纸(雪花)》公开课说课稿...
  18. Python基于basemap画论文级别的多子图空间场
  19. MacBook苹果电脑在充电中无法指纹解锁解决办法
  20. javascript动态构建函数

热门文章

  1. 亚马逊徐霄鹏: 5000 字深度解析美团八步增长战略
  2. Python从入门到实战,我觉着拥有这三本书很有必要
  3. vue3组件之间通信(一)——父传子属性和方法
  4. 网易云课堂-数据结构-练习题实现-00,打印沙漏
  5. TIPC Cluster5
  6. JUC Striped64
  7. easyexcel的导出
  8. 微信小程序 - 修改 button 边框和背景色
  9. 高漫数位板1060PRO 8192级的驱动下载与安装
  10. c语言sizeof用法计算char,C语言里sizeof(char)是什么意思