[珠算与珠心算中负数的运算]同学们知道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
以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.