微机原理/汇编语言/8088知识总结

第一章

1.进制

​ 200 16进制 (C8H) BCD压缩码(200H) 非压缩BCD(020000H)

​ ASCII(323030H)0的ASCII码是30H

​ a的ASCII码为61H,A的ASCII码为41H,换行LF(0AH),回车CR(0DH)

​ 如:456的ASCII码为343536H

2.补码

​ -1的8位补码

​ 1. 1的取反加一 FFH 11111111B

​ 2. 0-1,8个0借一个1减去1

​ 3. -1原码为10000001,反码为11111110(除符号位取反),补码为反码加一(11111111)

3.冯诺依曼结构

​ 程序指令存储器和数据存储器合并在一起的存储结构。五大组件:控制器、运算器、存储器、输 入设备和输出设备

习题:

​ CPU是Center Processing Unit(中央处理单元),微型机采用处理器芯片构成CPU

第二章

1.8088分成了两个单元(BIU(总线接口单元) EU(执行单元)),

两个单元最大的特点流水线工作

流水线技术(指令的读取是BIU单元,指令的执行是EU单元。在EU单元对一个指令进行译码执行时,BIU单元可以同时对后续指令进行读取。)

2.寄存器(不考每个寄存器是干嘛的)
通用寄存器

数据:AH AL AX累加器 BH BL BX 基址寄存器 CH CL CX 计数器 DH DL DX 数据寄存器

变址: SI 源地址寄存器 DI 目的地址寄存器

指针: BP基址指针 SP堆栈指针

控制:标志寄存器FLAGS 指令指针 IP

段寄存器

CS 代码段寄存器

SS堆栈段寄存器

DS数据段寄存器

ES附加段寄存器

3.标志位

IF(interrupt-enable Flag)中断允许标志:用于控制外部可屏蔽中断是否可以被处理器响应。IF=1,允许中断,IF=0,禁止中断

CF (carry flag )进位标志: 加减运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,否则为0;

PF(parity flag)奇偶标志:运算结果最低字节“1”的个数为零或偶数时,为1,否则为0。仅反映最低八位“1”的个数,即使是16字操作也是如此

ZF(zero flag) 零标志:运算结果为0则为1,否则为0。

DF(direction flag)方向标志:用于串操作指令中,以控制地址的变化方向DF为0时,串操作后的存储器地址就自动增加;DF为1时,串操作后的地址自动减少。

在这里插入图片描述

4.逻辑地址和物理地址的分段存储。

访问一个字变量X,位于DS,偏移地址是1000H,已知DS等于2000H,x所在物理地址是

解:2000左移四位变成20000H,加上偏移地址1000,变成21000H。

​ 完整答案是[21000H] [21001H],因为是字变量。

​ 将数据段设置为20000H到2FFFFH,DS应该为 2000H。

21000H到30FFFH,DS起始段应该为2100。
5.寻址方式

1.立即数寻址

​ MOV AX,0102H ;指令功能:AX<——0102H

​ 操作数直接存放在机器代码中,紧跟在操作码之后。

2.寄存器寻址

​ 操作数存放在REG中(ABCD(HLX)或四个段地址(CD DS SS ES))

​ MOV AX,BX ;两个操作数均为寄存器寻址:AX<——BX

3.存储器寻址

直接寻址(指令中直接包含了操作数的有效地址,跟在指令操作码之后)

MOV AX, [2000H] ;指令功能:AX<——DS:[2000H] (有效地址[2000H]默认在DS中)

若调用别的附加段、代码段、堆栈段中的数据,需要指明段超越前缀。

例如:将附加段中偏移地址2000H处的主存数据送至AX寄存器

​ MOV AX,ES:[2000H]

寄存器间接寻址

操作数的有效地址放在某个寄存器中,可以是基址寄存器BX也可以是变址寄存器SI、DI。默认段地址在DS,段超越前缀同上。

​ MOV AX,[BX] ;AX<——DS:[BX]

寄存器相对寻址

操作数的有效寻址是寄存器内容与有符号内容与有符号8位或16位位移量之和,寄存器可以是BX、BP、或SI、DI。

​ MOV AX,[SI+06H] ; AX<——DS:[SI+06H]

基址变址寻址

把基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成操作数的有效地址EA。

MOV AX,[BX+SI] ;AX<——DS:[BX+SI]

相对基址变址寻址

基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容加上应该8位或16位的位移量。

MOV AX,[BX+DI-06H] ;AX<——DS:[BX+DI-06H]

例题:

MOV AX,[XI+3] 原操数是寄存器相对寻址,目的操作AX是寄存器寻址。

6.编程指令

MOV IN OUT LOOP ADD ADC SUB MUL DIV AND OR

XLAT 串操作源操作数 来自于 DS:[BX+AL]

哪些指令会用到堆栈: POP PUSH PUSHF POPF

​ CALL RET IRET INT()中断调用 INTO

显示8的平方。

把64转换为两个码,个位和十位。

4 32H 6 36H

除以10得到商和余数。

7.标志操作指令

CLC C清0 STC C置1 CLD D标志清0 STD D标志置1

CLI I标志清0 (禁止中断) STI I标志置1 (允许中断)

8.移位指令

SHL(左移补零) SHR(右移补零) SAL(算术左移) SAR(算术右移)

ROL(循环左移) ROR(循环右移) RCL(带进位循环左移) RCR(带进位循环右移)

9.控制转移类指令

JMP (无条件跳转) JCC JZ

10.地址传送指令

​ LEA SI,BUF ;将BUF字段中的偏移量送到SI。

10.编程规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X4aRk0IL-1608867235592)(F:\Typora\pic\image-20201221184808684.png)]

箭头方向是从原指向目的。

1.立即数只出不进,只能作源操作数不能做目的操作数。

2.通用寄存器既可以作源操作数也可以作目的操作数

3.存储器只能作目的操作数不能做源操作数。

4.代码段只出不进,用户不能修改

5.段寄存器的赋值不能由立即数直接给出。

11.软件编程(读、写)

软件编程题为上机实验1类似。有显示有输入有输出。DOS中断的1号功能输入,2号功能打印单字符,9号功能打印字符串

常用的DOS系统功能调用

1.调用过程

​ 将功能号——》AH

​ 若需入口参数,设置入口参数

​ 执行INT 21H

​ 分析出口参数

2.键盘输入一个字符(功能号1)

MOV AH,1

INT 21H

将键盘输入的一个字符送入到AL中得到的是该字符的ASCII

3.显示输出(功能号2)
调用格式  

​ MOV DL, 1( 待显示字符)

​ MOV AH,2

​ INT 21H

​ 显示DL中的一个字符(需要将该字符的ASCII放入DL中

4.显示串字符(功能号9)

​ 示例:

​ DA SEGMENT

​ BUF DB ‘HELLOW $’

​ DA ENDS

​ …

​ LEA DX,BUF(字符串首偏移地址)

​ MOV AH,9

​ INT 21H

​ 显示以DX为首地址的字符串

要求字符串以'$'结尾
5.键盘输入串字符(功能号10)

​ BUF DB 80 ;定义串长,最大可以输入的串长度

​ DB ? ;用来存放实际输入的串长度

​ DB 80 DUP(?) ;实际用来存放字符串的空间

​ …

​ LEA DX,BUF

​ MOV AH,10

​ INT 21H

​ 对缓冲区的要求,允许输入的最大字符数预先放入首址中,输入的实际字符数放在首地址中,输入的实际字符数在首址+1单元中,键输入的字符从首址+2单元开始存放。

6.程序终止,返回DOS(功能号4CH)

​ MOV AH,4CH

​ INT 21H

​ 程序运行到该处结束,返回DOS操作系统。显示系统提示符

7.算术运算类指令

​ 加法和减法指令

​ ADD dest,drc dest——>dest+src

​ SUB dest——>dest-src

​ 带进位的

​ ADC / SBB 加上进位或者减去进位

​ INC 对操作数加一,DEC 减一

​ MUL r8(16)/m8(16) ;无符号字节(字)乘法,(DX.)AX<——AL*r8/m8

​ IMUL r8(16)/m8(16) ;有符号字节(字)乘法,(DX.)AX<——AL*r8/m8

​ 字节相乘,得到16位的字,存入AX中,16位数据相乘,得到32位结果,高字存入DX,低字存入AX中。

8.程序简化的定义格式

.small
.stack
.data
; ....数据定义
.code

start:	 mov ax,@data;程序中要执行第一条指令的标号
		mov ds,ax
		;.....程序代码
		
		
		
		mov ah,4ch  ;或者mov ax,4c00h
		int 21h     ;程序终止点,返回DOS操作系统



end start



9.习题

​ 1.微处理器内部具有:算术逻辑单元ALU、寄存器组和控制器

​ 8088的总线接口单元BIU:管理8088与系统总线的接口负责cpu对接口和外设进行访问。

​ 执行单元EU:负责指令译码、执行和数据运算。

​ 取指令是CPU最频繁的操作,8位CPU在指令译码前必须等待取指令操作的完成,8088中需要译 码的指令已经取到了指令队列,不需要等待取指令。

​ 2.物理地址:物理存储单元具有的一个唯一的20位编号。

​ 逻辑地址:逻辑地址中的短地址左移4位,加上偏移地址就得到20位物理地址。

​ 1MB最多分为2^20 / 2 ^4=16个逻辑段,因为每隔16个字节单元就可以开始一个逻辑段。
​ 40H:17H =00417H。

​ DS=2000H,BX=0100H,SI=0002H [21200H] ~ [21203H] 分别为2AH,4CH,B7H,65H

​ mov ax,1200h; AX=1200H,立即数寻址

​ mov ax,bx ;AX=0100H,寄存器寻址

​ mov ax,[bx] [si+1100h] ;地址=20000+0100+0002+1100=21202 (低地址) 即

​ AX=65B7H(21203 21202)。

  1. IP是指令指针,不能被赋值。 mov ip,ax

    立即数不能直接赋值给段寄存器,段寄存器之间也不能直接赋值

    mov cx,dl cx16位。dl8位,操作位宽不一样

    mov al,300 300超过8位,溢出

    mov al,bx+di +作为算术运算符,它的操作数为常量

    mov [sp],ax 寄存器间寻址方式只有BX,SI,DI

5.用寄存器BX和SI的基址变址寻址方式,把存储器中的一个字节与AL寄存器的内容相加,并保存在AL寄存器中

​ ADD AL,[BX+SI]和ADD AL,[BX] [SI]等价

6.解读程序

mov ax,X							;把x送至ax寄存器。

	imul	 Y  							;Y*X存入AX和DX中

	mov	cx,ax						;把ax的值送至CX,即cx=Y*X
	mov	bx,dx						;把DX的值送至BX中,即

	mov	ax,Z						 ;把Z送至AX寄存器中

	cwd									;符号扩展,AX扩为DX

	add	cx,ax						;将AX与CX相加结果存到CX中  
	adc	bx,dx						;将DX与BX相加结果存到BX中  与上一起为X*Y+Z 
	sub	cx,540						;
	sbb	bx,0                          ;加上上为减去X*Y+Z-540
	mov	ax,V						;把V送至ax中
	cwd								;符号扩展,AX扩展为AX和DX
	sub	ax,cx						
	sbb	dx,bx						;同上为V-(X*Y+Z-540)
    idiv	x						;(  V-(X*Y+Z-540)  )/X (DX为余数,AX为商)
    
	
	
    

7.NOP指令执行了多少次?

​ xor cx,cx ;自己和自己异或,即为0,复位

delay: nop

​ loop delay ;cx=cx-1 FFFFH 即65535+1

第三章

1.伪指令:

​ VAR1(符号名) DB(伪指令符) 12H(操作数);为变量VAR1分配一个字节单元,初值为12H

2.符号定义伪指令

​ 符号 EQU(赋值) 表达式

​ eg NUM EQU 16H 不能用EQU重复定义同一符号,NUM只是一个符号不占用内存空间

3.等号可以重新定义符号 (不占内存空间)

​ count=10

​ count=count+10

4.

在这里插入图片描述

高字节内容在高地址,低字节内容在低地址。

  1. VAR DB ?,? ;分配空间但是不赋初值

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x54k9zl1-1608867235596)(F:\Typora\pic\image-20201222020046704.png)]

6.$符号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DGGoO0DY-1608867235598)(F:\Typora\pic\image-20201222020204513.png)]

7.MOV AX,OFFSRT BUF = LEA AX,BUF

PTR为表达式赋新的类型 类型(BYTE\WORD\DWORD(双字)变量类型)

​ NEAR\FAR(标号类型)

类型 PTR 表达式(其他变量的标号)

​ eg. VAR1 dw 1234H

​ VAR2 EQU BYTE PTR VAR1

​ eg. JMP FAR PTR L1

8.习题

​ 1.程序执行开始位置:用标号指明。

​ 返回DOS:4C00H子功能实现

​ 程序在遇到END伪指令时,停止汇编。

​ 2.说明语句分配的存储空间及初始化的数据值

​ byte_var db ‘ABC’,10,10h,‘EF’,3dup(-1,?,3 dup(4))

41H
42H
43H
0AH
10H
45H
46H
FFH
00H
04H
04H
04H
FFH
00H

3.编写程序把键盘输入的小写字母编程大写字母。

mov ah,01h

int 21hq

sub al,20h

mov dl,al

mov ah,2

int 21h

4.编制程序完成12H,45H,F3H,6AG,20H,EFH,90H,C8H,57H,34H十个字节数据之和。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g9n8CFAO-1608867235601)(F:\Typora\pic\image-20201222030756310.png)]

第四章

1.总线带宽

​ 总线带宽等于数据量除以需要的时间。时间根据频率算。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ql7Y3ZVZ-1608867235602)(F:\Typora\pic\image-20201222101008677.png)]

2.8088引脚

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B5IS8xvJ-1608867235603)(F:\Typora\pic\image-20201222100055042.png)]

​ 1.数据地址总线

​ A表示地址,D表示数据,AD在一起为分时复用,T1作地址线,T2\3\4作数据线。

​ 上面有横线是低电平有效,没有就是高电平有效。

​ T1时刻ALE高有效,AD为A,传地址。

​ T2\3\4 ALE置位低电平,走数据。

​ A8到A15专门走地址,A16/S3~A19/S6 地址/状态分时复用线

​ 2.控制和状态线

​ ALE(地址锁存允许同上),为高时,所有的都传地址

​ IO/(-)M 高电平(IO)访问I/O接口,低电平(-M)访问存储器,此时A19~A0提供20位的存储 器物理地址。

​ (-)WR 低电平有效,表示微处理器正将数据写到存储单元或I/O端口。

​ (-)RD 正在从存储单元或I/O端口读数据

​ READY(存储器或I/O端口)就绪引脚,输入给处理器的信号,高电平表示可以继续数据读写,I/O可以利用该信号无效请求处理器继续等待数据的到来

​ 3.其他控制信号

​ INTR 可屏蔽中断请求信号 (-)INTA可屏蔽中断响应信号

​ NMI 不可屏蔽中断请求信号(优先权高于INTR)

​ HOLD/HLDA 保持即总线请求/响应引脚

​ RESET 有效是迫使微处理器回到其初始状态,复位后第一条指令在物理地址FFFF0H(主存地址高端)

​ CLK 频率就是微处理器的频率

​ MN/M(-)X 高电平最小组态,低电平最大组图

​ (-)test 测试输入

3.T1~T4

​ T1:输出存储器地址或I/O地址,同时锁存地址

​ T2: 输出控制信号

​ T3和Tw:T3和Tw前沿检测READY是否有效,有效进入下一个,无效就延长一个Tw时钟周期

​ T4:完成数据传送

4.端口和地址是两套地址,靠IO/(-M)区分,内存20根(1M),IO16根地址线(A16~A19)不用(64K),

5.45:51讲图dd+

​ 1.373ALE锁存输出地址地址。三片373,20根地址线,373出来之后是纯粹的20根地址线,

​ 2.245是缓冲数据总线,该开的时候开,不该开的时候不开,T1在传地址,不该开,t2开,t3稳定工作, 输出或输入,CE(chip enable)连 DE(data enable),方向AB/(-BA)接到DT/R。

​ 3.一般片选接138译码。CE接138,

​ 4.给地址范围连线,连线给地址范围,138的M/(-IO)要取非。62256存储器有15根,32K,地址范围是0000~7FFF。

4.习题

​ 1.微机总线的信号线包括 数据总线、地址总线、控制总线

​ 总线分为三层:芯片总线、内总线、外总线

​ 2.占用总线进行数据传输,一般需要经过总线请求和仲裁、寻址、数据传送、结束四个阶段

​ 3.ISA总线的时钟频率是8MHz,每两个时钟可以传送一个16为数据,计算其总线带宽。

​ 16/(2*1/8/1000000)=64Mb/s

​ 4.一条指令被执行的周期所需要的时间被称为指令周期

​ 总线周期指的是 CPU通过总线操作与外界进行一次数据交换的过程

​ 8088的总线周期由4个T组成

​ 每个T的持续时间为200ns

第五章

62256的连线。

第六章

1.三种软件方式。

*无条件传送、查询传送、中断传送

硬件

DMA

无条件传送:工作方式简单,相对处理器工作方式慢,与处理器交换设备时可认为它们总是处于准备好状态,随时可以进行数据传送。有时也称为立即传送或同步传送

查询传送:首先查询外设工作状态,只有在外设准备好的情况下才进行数据传输

中断传送:外设在准备好的条件下通过请求信号,主动向处理器提出交换数据的请求,处理器无更紧迫任务即响应,中断处理结束后返回

DMA传送:其他控制器接管系统总线实现存储器与外设之间的数据传输,直接存储器存取。

第七章

1.配置单片8259

​ IR0对应中断号为16,打开IR0,其余关闭。

mov ax,offset interrupt
mov ds:[0040h],ax
mov ax,seg interrup
mov ds:[0042h],ax

mov al,13h
mov dx,04000h
out dx,al

mov al,10h     ;ir0的16号定下来,即ir1为17号,ir2为18号,ir1为17,此处还是配16
mov dx,04002h  
out dx,al
                             主(1)
mov al,09h   ;icw4  0000缓(1)从(0)01
					  非缓冲(0)
out dx,al

mov al,11111110  ;开ir0
out dx,al





2.8259的概念

​ 1.内部中断

​ 除法错中断(除数为0或商超过了存储器所能表达的范围)、

​ 指令中断 执行中断指令INT n时产生的一个向量号为n的内部中断,

​ 溢出中断 执行溢出中断指令INTO时,若溢出标志OF为1,产生向量号为4的内部中断

​ 单步中断 单步标志TF为1,每条指令执行结束后产生一个向量号为1的内部中断

​ 2.外部中断 (当前指令执行结束后)

​ 非屏蔽中断 主要用于意外或故障

​ 可屏蔽中断 取决IF状态,主要用于与外设进行数据交换

优先级:软件中断(除法、指令、溢出)> 非屏蔽中断 > 可屏蔽中断 > 单步中断

3.三个寄存器作用

​ IRR(request)(记录)中断请求寄存器,保持八条外界中断请求信号IR0~IR7的状态,Di位为1表示IRi有中断请求。0表示无请求。

​ ISR(service)中断服务寄存器,保存正在被8259A服务着的中断状态。

​ IMR中断屏蔽寄存器,保存屏蔽状态,Di为1表示被屏蔽。

​ 8259A最多8个级联,可以把中断源扩展到64个

4.INTR (-)INTA接线COU对应的

第八章

1.配置8253

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-42U2xq2Y-1608867235604)(F:\Typora\pic\image-20201224005640864.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WStRAoq6-1608867235605)(F:\Typora\pic\image-20201224005713122.png)]

start:	mov ax, @data
		mov ds, ax
		mov dx, COM8253 ;写控制字,初始化8253
		mov al, 00110010b; 
		out dx, al 
	
		mov dx, TIMER0
		mov al, 00h
		out dx, al              
		
		mov al, 40h
		out dx, al   
                                           ;配置timer 0 ,时间,下面高,上面低。
P8253COM EQU 0043H
INTQ3 EQU INTREEUP3
        ORG 4500H
                
START:

	MOV AL,01110110B ;
	MOV DX,P8253COM
	OUT DX,AL
	MOV DX,P8253CH1
	MOV AL,40H
	OUT DX,AL
	NOP
	MOV AL,9CH
	OUT DX,AL

	MOV AL,00010110B  ;
	MOV DX,P8253COM
 	OUT DX,AL
	MOV DX,P8253CH0
	MOV AL,32H        ;
 	OUT DX,AL
;

GATE1,GATE0接+5V
;OUT1接CLK0
;OUT0直接接灯
AGAIN: JMP AGAIN

CODE ENDS
END START             

2.连线

​ CLK.时钟输入信号

​ GATE 外部输入信号,不同工作方式 ,作用不同,电平和上升沿两种

​ OUT——一次计数过程结束,产生输出信号

3.方式

​ 0,写入N后,经N+1脉冲输出变高

​ 1,单稳脉冲的宽度为N个CLK周期

​ 2. 每N个CLK脉冲,输出一个宽度为CLK周期的脉冲

3.前一半高电平,后一半低电平的方波

​ 4.写入N后过N+1个CLK,输出脉冲宽度的为1个CLK的脉冲

​ 5.门控出发后过N+1个CLK,输出宽度为1个CLK脉冲

8255

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yQm8p4JC-1608867235606)(F:\Typora\pic\image-20201224010720213.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N8ldrNPv-1608867235607)(F:\Typora\pic\image-20201224010918594.png)]

mov al,90h
mov dx,5806h
out dx,al     ;

mov dx,5800h
in al,dx

mov dx,5802h
out dx,al 

代码

1.x^3

.model small
.stack
.data
	
	STR  db  'please input a number:','$'
	show  db ,0ah,0dh, 'x^3=','$'
	num   db   3 dup(?),'$'
.code

start:
	mov ax,@data
	mov ds,ax


	MOV  AH,9
	mov dx,offset STR
	INT 21H

	
	MOV AH,1
	INT 21H

	and al,0fh
   	mov num,al

  	mul   al
	;mov bl,num
	;mul  bl
	mul  num
	
	mov   bl,10
	div  bl

	mov  num+2,ah
	add   num+2,30h
	
	mov  ah,0
	div    bl
	
	mov    num+1,ah
	add     num+1,30h

	mov     num,al
	add      num,30h    
		

               mov ah,9
	mov  dx,offset show
	int 21h

	lea dx,num
	mov ah,9
	int 21h

	mov ax,4c00h
	int 21h
end start

2.x+y

.model small
.stack
.data
	tip db 'please input x+y',0ah,0dh,'$'
	tip_x  db 'x=','$'
	tip_y  db 'y=','$'
	x   db  ?,'$'
	y   db  ?,'$'
	res db  'x+y=','$'

.code
start:
	mov ax,@data
	mov ds,ax

	lea dx,tip
	mov ah,09h
	int 21h

	lea dx,tip_x
	mov ah,09h
	int 21h

	xor al,al	
	mov ah,01h
	int 21h
	mov x,al
    sub x,30h
	
	lea dx,tip_y
	mov ah,09h
	int 21h


	xor al,al
	mov ah,01h
	int 21h
	mov y,al
    sub y,30h
	
	lea dx,res
	mov ah,09h
	int 21h

	xor ax,ax
;	and ax,0000h
	mov al,x
	add  al,y
               
	mov bl,10
	div bl
	
	xor cx,cx
	
	mov ch,ah
	mov cl,al
	
	add cl,30h
	add ch,30h	
	
               mov dl,cl
	mov ah,02h
	int 21h 

              	xor dx,dx

    	mov dl,ch
	mov ah,02h
	int 21h

	mov ax,4c00h
	int 21h

end start



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N8wJA5gf-1608867235608)(F:\Typora\pic\image-20201223134648689.png)]

.model small
.stack
.data
	   x    equ 2 ,'$'
	   XX  db x ,'$'
       YY  db ?  ,'$'
.code

start:
	  mov ax,@data
	  mov ds,ax
	  
	  mov al,XX
	  add al,0
	  jz  st1
	  
	  and al,10000000b
	  jz  st2
	  
	  mov bl,0ffh
	  mov YY,bl
      jmp final


st1: 	mov bl,0
	    mov YY,bl
    	jmp final

st2: 	mov bl,1
	    mov YY,bl
	    jmp final


final:
        xor ax,ax
        xor dl,dl
	
	    mov dl,YY
	    add dl,30h
	
        mov ah,02h
	   int 21h
              
        mov ax,4c00h
	    int 21h

end start
.model small
.stack
.data
               b_data db   1,2,3,4,5,6,7,8,9,0 ;原始数据
               num equ 10
	flag db 0
	

.code
start:
	mov ax,@data
	mov ds,ax
	
	xor si,si	;位移量清零
	xor al,al	;取第一个数
	mov cx,num;累加次数
again:
	mov al,b_data[si];累加inc si
	mov dl,al
	add dl,30h
	mov ah,02h
	int 21h
	inc si
	loop again
	
	mov dl,0ah
	mov ah,02h
	int 21h	

	xor si,si
	mov cx,num
	mov dl,flag
	add dl,1
	mov flag,dl
	cmp dl,1
	jz again
	
	mov ax,4c00h
	int 21h
	
end start
	   
  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值