问题是"正如可以通过相加和相加来增加,可以通过一次又一次地减去来进行除法。编写一个程序,用一个程序计算一个数字N1进入另一个数字N2的次数。您将需要一个循环,并计算该循环执行的次数"。我真的陷入了减法阶段。我知道我必须创建一个循环,但我不知道在哪里放置它。
org 100h
.MODEL SMALL
.STACK 100H
.DATA
MSG1 DB 'FIRST > $'
MSG2 DB 'SECOND > $'
MSG3 DB 'THE SUBTRACTION OF '
VALUE1 DB ?
MSG4 DB ' AND '
VALUE2 DB ?, ' IS '
SUM DB ?,'.$'
CR DB 0DH, 0AH, '$'
.CODE
MAIN PROC
;INITIALIZE DS
MOV AX, @DATA
MOV DS, AX
;PROMPT FOR FIRST INPUT
LEA DX, MSG1
MOV AH, 9H
INT 21H
MOV AH, 1H
INT 21H
MOV VALUE1, AL
MOV BH, AL
SUB BH, '0'
;CARRIAGE RETURN FORM FEED
LEA DX, CR
MOV AH, 9H
INT 21H
;PROMPT FOR SECOND INPUT
LEA DX, MSG2
MOV AH, 9H
INT 21H
MOV AH, 1H
INT 21H
MOV VALUE2, AL
MOV BL, AL
SUB BL, '0'
SUBTRACT:
;SUB THE VALUES CONVERT TO CHARACTER AND SAVE
SUB BH, BL
ADD BH, '0'
MOV SUM, BH
;CARRIAGE RETURN FORM FEED
LEA DX, CR
MOV AH, 9H
INT 21H
;OUTPUT THE RESULT
LEA DX, MSG3
MOV AH, 9H
INT 21H
TERMINATE:
;RETURN TO DOS
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
答案 0 :(得分:1)
正N1,N2的算法:
N1
,N2
并将一些R
设置为-1 R
N1
中减去N2
(用结果更新N2
)R
包含整数除法N2
/ N1
步骤2.到4.可以用x86汇编每步单指令(sub
更新"进行标记",可以用来判断减法是否做了&# 34;溢出" - 由其中一个" Jcc" =跳转条件代码指令用于跳转到其他地方或继续下一条指令。)
答案 1 :(得分:0)
下一个程序完成这项工作。这些数字在数据段中被声明为变量,注释解释了所有内容(只需将其复制粘贴到EMU8086中并运行它):
pd = new ProgressDialog(getActivity());
pd.show();
pd.setContentView(R.layout.custom_progressdialog);
pd.setCancelable(false);
程序" number2string"用于将结果转换为字符串,以防该结果有多个数字。
请注意,不会从键盘捕获数字,被除数(N2)和除数(N1),它们是数据段中的静态值。为了从键盘捕获它们,我们需要另一个过程" string2number",将字符串转换为数字格式。