;编写程序,将一个包含有20个数据的数组M分成两个数组:
;正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。 ;写一个二进制转化为十进制
DATAS SEGMENT
COUNT EQU 20
COUNT1 DB 0 ;存放正数的个数
COUNT2 DB 0 ;存放负数的个数
ARRAY DW 4 DUP(-3,-1111,-23,-41,5) ;存放数组
ARRAY1 DW 20 DUP(?) ;存放正数
ARRAY2 DW 20 DUP(?) ;存放负数
ZHENDB 0DH, 0AH, 'The positive number is:', '$';正数的个数是:
FUDB 0DH, 0AH, 'The negative number is:', '$' ;负数的个数是:
CRLFDB 0DH, 0AH, '$'
DATAS ENDS
;STACKS SEGMENT
; DW 256 DUP(?)
;STACKS ENDS
CODES SEGMENT
MAIN PROC FAR
ASSUME CS:CODES, DS:DATAS ;SS:STACKS
START:
PUSHDS;设置返回DOS
SUBAX, AX
PUSHAX
MOV AX, DATAS
MOV DS, AX;给DS赋值
;MOV AX, STACKS
;MOV SS, AX
BEGIN:MOV CX, COUNT
LEABX, ARRAY
LEASI, ARRAY1
LEADI, ARRAY2
BEGIN1: MOV AX, [BX]
CMP AX, 0;是负数码?
JSFUSHU
MOV [SI], AX;是正数,存入正数数组
INCCOUNT1;正数个数+1
ADD SI, 2
JMPSHORT NEXT
FUSHU: MOV [DI], AX;是负数,存入负数数组
INCCOUNT2;负数个数+1
ADD DI, 2
NEXT:ADD BX, 2
LOOPBEGIN1
LEADX, ZHEN;显示正数个数
MOV AL, COUNT1
CALLDISPLAY;调显示子程序
LEADX, FU;显示负数个数
MOV AL, COUNT2
CALLDISPLAY;调显示子程序
RET
MAINENDP
;--------------------------------------------------------------------------
DISPLAYPROCNEAR;显示子程序
PUSH AX
MOV AH, 9;显示一个字符串的DOS调用
INT21H
POP AX
AAM;将(AL)中的二进制数转换为二个非压缩BCD码
MOV CL, AL
ADD AH, '0';变为0~9的ASCII码
MOV DL, AH
MOV AH, 2;显示一个字符的DOS调用
INT21H
ADD CL, '0';变为0~9的ASCII码
MOV DL, CL
MOV AH, 2;显示一个字符的DOS调用
INT21H
LEADX, CRLF;显示回车换行
MOV AH, 9;显示一个字符串的DOS调用
INT21H
RET
DISPLAYENDP;显示子程序结束
CODESENDS;以上定义代码段
;--------------------------------------------------------------------------
ENDSTART
////////////////////////////////////////////////////////////
equ是一个代码替换指令比如:s equ bx+simov cx,[s]那么上面两句代码相当于如下指令:mov cx,[bx+si]
//////////////////////////////////////////////////////////////
汇编语言教程-ASCII码乘调整指令AAM
3、ASCII码乘调整指令AAM(Ascii Adjust After Multiplication)
该指令是用于调整寄存器AL之值,该值是由二个单BCD码字节用无符号乘指令MUL所得的积。其调整规则如下:
AH←AL/10(商),AL←AL%10(余数)
指令的格式:AAM
受影响的标志位:PF、SF和ZF(AF、CF和OF等都是无定义)
例如:
MOVAL, 9
MOVBL, 8
MULBL;AL=72D
AAM;AH=7, AL=2
4、ASCII码除调整指令AAD(Ascii Adjust After Division)
该指令是在作除法前用于调整寄存器AH和AL之值,它是把二个寄存器中单BCD码组成一个十进制数值,为下面的除法作准备的。其调整规则如下:
AL←AH*10+AL,AH←0
指令的格式:AAD
受影响的标志位:PF、SF和ZF(AF、CF和OF等都是无定义)
例如:
MOVAX, 0502H
MOVBL, 10D
AAD;AH=0, AL=52D
DIV BL;AH=2(余数), AL=5(商)
分享到:
相关推荐
这是IBM-PC汇编语言程序设计中的一个小题6-15,R<——x+y-3,也许还有不足,大家可以共同研究
基于汇编语言的数字时钟-语言教程案例分享基于汇编语言的数字时钟-语言教程案例分享基于汇编语言的数字时钟-语言教程案例分享基于汇编语言的数字时钟-语言教程案例分享基于汇编语言的数字时钟-语言教程案例分享基于...
本文档是一个非常详细的汇编语言学习笔记,涵盖了从基本的编程环境搭建到深入理解汇编语言的数据、顺序程序设计、分支结构程序设计、循环、数组及指针、函数、结构等方面的知识点。读者可以通过阅读本文档,系统地...
用汇编语言编写 实现数组中元素的分类。需在代码中设置数据内容
简易的文本编辑器源代码,很好用啊!希望多多支持!!!
项目管理制度汇编(doc84)-项目管理【管理资料】.docx项目管理制度汇编(doc84)-项目管理【管理资料】.docx项目管理制度汇编(doc84)-项目管理【管理资料】.docx项目管理制度汇编(doc84)-项目管理【管理资料】.docx项目...
XX集团管控制度与核心流程汇编--财务管理-预算管理办法(DOC 49页)acjword资料42页.docxXX集团管控制度与核心流程汇编--财务管理-预算管理办法(DOC 49页)acjword资料42页.docxXX集团管控制度与核心流程汇编--财务管理...
XX集团管控制度与核心流程汇编--财务管理-预算管理办法(DOC 49页)acjword资料42页.pdfXX集团管控制度与核心流程汇编--财务管理-预算管理办法(DOC 49页)acjword资料42页.pdfXX集团管控制度与核心流程汇编--财务管理-...
汇编课件.rar---学习汇编语言的好资料,好不好下了就知道
第一部分IDA简介 1.反汇编简介-----------第1课 A.反汇编理论 B.为何反汇编 C.如何反汇编 2.逆向与反汇编工具---------第2课 A.分类工具 B.摘要工具 C.深度检测工具 第二部分 IDA的基本用法 1.IDA入门-------...
汇编语言代码大全--精通汇编.rar
汇编入门书籍,chm格式;汇编语言入门---适合入门级学习
ARM汇编语言英文版 --- ARM官方资料,对于中文的指令译文有疑问的可以查看原版著作。
易语言学习-WonderWall内联汇编支持库(11-28).zip
汇编-数据处理指令-笔记.pdf汇编-数据处理指令-笔记.pdf汇编-数据处理指令-笔记.pdf汇编-数据处理指令-笔记.pdf汇编-数据处理指令-笔记.pdf汇编-数据处理指令-笔记.pdf汇编-数据处理指令-笔记.pdf汇编-数据处理指令-...
汇编-数据处理指令-笔记.docx汇编-数据处理指令-笔记.docx汇编-数据处理指令-笔记.docx汇编-数据处理指令-笔记.docx汇编-数据处理指令-笔记.docx汇编-数据处理指令-笔记.docx汇编-数据处理指令-笔记.docx汇编-数据...
轻松汇编 汇编工具 轻松汇编qasm-v2.70
汇编语言课件-------------------------------------
汇编语言代码大全--精通汇编的,里面有一些小代码, 通过运行可以了解汇编
; set segment registers: MOV AX, DSEG MOV DS, AX MOV ES, AX ; add your code here MOV AX,0 MOV BX,1 A:ADD AX,BX INC BX CMP BX,10