微机原理汇编语言的程序

微机原理汇编语言的程序,第1张

调试时需要把中文标点符号改为英文标点符号,否则会出现OUT OF MEMORY的提示信息

DATA SEGMENT定义数据段

ADR DB 10,-31,-45,67,80,46,0,-31,0,77

NUM EQU $-ADRNUM是数据个数

DA1 DB 0DA1用来存放正数的个数,初值为0

DA2 DB 0DA2用来存放负数的个数,初值为0

DA3 DB 0DA3用来存放0的个数,初值为0

DATA ENDS

CODE SEGMENT定义代码段

ASSUME DS:DATA,CS:CODE

START: MOV AX,DATA数据段地址装入

MOV DS,AX

LEA SI,ADR

MOV CX,NUM

MOV AL,0AL清零

DON1:MOV AL,[SI]

CMP AL,0

JGE DON2

INC DA2

JMP END0

DON2:CMP AL,0

JZ DON3

INC DA1

JMP END0

DON3:INC DA3

END0:INC SI

DEC CX

JNZ DON1

MOV AH,4CH

INT 21H

CODE ENDS

END START

1.DA1 DW ‘AB’,‘CD’,‘EF’,‘GH’

MOV AX, DA1+3 //将DA1+3与DA1+4相邻的两个字节分别送给AL与AH

LEA BX, DA1//将DA1的偏移地址送BX

INC BX //BX +1 -->Bx

MOV CX, [BX]//将以BX为有效地址的两个相邻字节单元送寄存器CX

程序段执行后,AX='FC' , BX= offset DA1, CX='DA'

数据存储结构如下:

DA1--> ‘B’

‘A’

‘D’

‘C’

‘F’

‘E’

‘H’

‘G’

2. MOV AX, 1199H

XCHG AH, AL //AL=11H

MOV WVAR, 5566H//(WVAR+1)=55H

XCHG AL, BYTE PRT WVAR+1 //AL=55H,(WVAR+1)=11HH

程序段运行后,AX= 9955H , WVAR=1166H

3.DA1 DB ‘123456789’

DA2 DB9 DUP(0)

LEA SI , DA1//置源偏4移地址

LEA DI , DA2 //置目的偏4移地址

MOV CX, 9 //设计循环初值

CLD //将DF标志位置0

LOP: LODSB //取第一个字符‘1’,其ASCII码为31H

ADD AL , 10H //ASCII码加10H ,则为41H,对应为字母'A'

STOSB //存入DA2字符串

LOOP LOP //依次循环进行转换

程序段执行后,DA2各字节中的数据;'ABCDEFGHI'

1.编制一段程序求出下列公式中Z的值并放在RESULT单元,注X,Y,RESULT分别定义成字类型变量

Z=((X+Y)*4-Y)/2

答:

MOV

AX,X

ADD

AX,Y

SHL

AX,1

SHL

AX,1

SUB

AX,Y

SHR

AX,1

MOV

RESULT,AX

2.试编写一小侧面硬指令序列,在屏幕上显示出"Hello

everybody!"字符串,该字符串已在数据段定义好为变量string

答:

LEA

DX,string

MOV

AH,9

INT

21H


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11098555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存