当前位置:三九宝宝网 → 宝宝教育 → 写作范文 → 正文

菜鸟一枚刚学汇编编了个统计正负数的程序怎么做不出来跪求

更新:12-27 整理:39baobao.com
字体:

[珠算与珠心算中负数的运算]同学们知道1-2等于多少呢?那就是-1,-1就是负数,而且珠算和珠心算中都是有负数的运算的,那么到底该怎么运算呢?有没有什么运算技巧呢?赶快来看看吧! 在商除法的计算中,传统方法因为余...+阅读

DATA SEGMENT

BUF DW 2310,-43,31,-321,-1234,345,0,3213,0,5477

NUM equ ($-BUF)/2 ;BUF数组中数字个数

POSITIVE DB 0

NEGATIVE DB 0

ZERO DB 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE ,DS:DATA

MAIN PROC FAR

MOV AX,DATA

MOV DS,AX

LEA si,BUF ;一般习惯用si做变址

mov cx,NUM

PP1: CMP [si],0 ;cmp可以直接这样用

jg PP2

je PP3

inc NEGATIVE ;直接用变量 通用寄存器留作它用

jmp back

PP2: inc POSITIVE

jmp back

PP3: inc ZERO

back: add si,2

loop PP1

mov DL,NEGATIVE

add dx,30h

MOV AH,2 ;注意int 21h调用 2号和9号的区别 一个输出单个字符 一个输出字符串 ah定义一次就行 后面ah值不变

INT 21H

MOV DL,' ';空格

INT 21H

MOV DL,ZERO

add dl,30h

INT 21H

MOV DL,' ';空格

INT 21H

MOV DL,POSITIVE

add dl,30h

INT 21H

mov ah,1 ;按任意键退出

int 21h

mov ax,4c00h ;返回 等同ret 这样就不需要在开始时往堆栈放东西

int 21h

MAIN ENDP

CODE ENDS

END MAIN

你写的程序实在是……帮你写一个同样作用的

你可以比较一下流程和相同作用用什么语句比较简洁

给你提几点注意的问题吧

1、加一用inc 加2、3、4……用add 同理dec和sub

2、可以给ax直接赋值 不必对ah al分别赋值 同理bx cx dx(ax高8位为ah 低8位为al)

3、要清楚指令操作数的范围 比如cmp后面可以用寄存器 储存器 立即数

4、int 21h ah=9的输出 dx中要放字符串地址 比如lea dx,zero而不是用mov

5、慢慢学别着急写程序 感觉你对指令的理解和运用很混乱 先打牢基础吧 多看看写好的例子

本文地址:https://www.39baobao.com/show/33_15956.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.