求用汇编语言帮我编一个小程序,要求是一的位十进制数的加减乘除。谢过!

 我来答
百度网友fde6a27fc
2013-01-11 · TA获得超过6432个赞
知道大有可为答主
回答量:1.3万
采纳率:25%
帮助的人:3738万
展开全部
根据该计划MASMPlus 1.2集成环境编译,调试,运行正确的。
。假设CS,DS:代码:代码小模型
代码段

CR EQU 000DH
LF EQU 000AH
KBBack EQU 0008H
---- ---------------------------------
功能:显示的指定地址(Str_Addr的)字符串 BR />;入口:
; Str_Addr =字符串地址(需要在数据段)
;用法:输出Str_Addr
;使用示例:输出PromptStr
输出宏Str_Addr
LEA DX,Str_Addr
MOV AH,9
INT 21H
ENDM
; ---------------字符 Output_Chr ----------------------
;功能:输出一个字符
;入口:DL =显示PROC近
PUSH AX
MOV AH,02H
INT 21H
POP AX
RET
Output_Chr ENDP
; ------------ -------------------------
功能:输出回车换行
Output_CTLF进程近
PUSH AX
推DX
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
弹出DX /> POP AX
的RET
Output_CTLF ENDP
; ------------------------------ -------
:以光标位置
;入口:
;出口:DH =行号,DL =列数
调用GetCursor近 PUSH AX
PUSH BX
PUSH CX
XOR BX,BX
MOV AH,3
INT 10H
MOV CURSOR_ROW,DH
MOV Cursor_Col,DL
POP CX
POP BX
POP AX
RET
CURSOR_ROW DB?
Cursor_Col DB?
调用GetCursor ENDP
; ------------------------------------- />功能:设置光标的位置
;入口:CURSOR_ROW =行坐标; Cursor_Col:列坐标)
SetCursor PROC近
PUSH CX
PUSH BX / > PUSH AX
MOV DH,CURSOR_ROW
MOV DL,Cursor_Col XOR BX,BX
MOV AH,2
INT 10H
POP AX
> POP BX
POP CX
RET
SetCursor ENDP
; ------------------------- ------------
:键盘输入一个指定的小数位数的二进制数转换保存在指定的存储单元。
由于有限的最大的数据类型为字,这样的数位:5最大符号数:65536
;约定:直接输入被视为一个数字0
;入口:@ @数字=数字位数; DI =保存输入的数字首地址
; _at_ @ type_data项=保存的数据类型,B =字节型,W =字。出口:转换的二进制数存储在二单元
的简称Input_Digit PROC近
推DX
推CX
推BX
推二
;
LEA DI,@ @ Save_Tmp
推二
CLD
MOV CL,@ @数字
异CH,CH
推CX
@输入:呼叫调用GetCursor;光标位置
MOV AH,1;接受一个字符
INT 21H的
CMP AL,CR的键盘,如果该类型是一个回车,键入N位数字
JZ _at_ _at_ ASC_Dec转处理类型的数字
CMP AL,KBBack的的
JZ _at_ @ KB_Back;如果空车返回键重新输入 /> CMP AL,'0'
JB @ @ KBBack下面的数字'0',重新进入
CMP AL,'9'
JA _at_ _at_ KBBack下面的数字“ 9',再输入到
JMP _at_ _at_ Save_Dig的
_at_ _at_ KB_Back:十二月Cursor_Col
公司的CX
十二月二
_at_ _at_ KBBack:呼叫SetCursor,设置光标位置
JMP @ @输入
@ @ Save_Dig:人,0FH;转换二进制数
STOSB;保存
循环_at_ _at_输入公认的下一个数字
_at_ _at_ ASC_Dec:MOV AX,CX
弹出CX 弹出SI
子CX,AX;实际输入的数字位数
异BP,BP
XOR DX,DX
XOR AX,AX
jcxz @ @ Save_Ret,直接回车,不输入任何数字,按输入'0'处理
十二月CX,实际输入的数字位数减1,准备输入这串数字转换器的二进制数的
jcxz _at_ _at_ One_Digit输入数字只有一个转去,直接保存二进制数
MOV BX 10的
_at_ _at_ Mul_Ten:LODSB
CBW
添加斧头,BP
MUL BX
MOV BP,斧头
环@ @ Mul_Ten
@ @ One_Digit:LODSB
CBW
添加斧头,BP
@ @ Save_Ret:流行音乐二
CMP @ @ type_data项,'B'; byte类型?
JZ5美元
STOSW
JMP3美元
STOSB
弹出BX
弹出CX
流行的DX
RET BR /> @ @数字分贝;中位数小数位数
_at_“_at_ type_data项DB'B',保存的数据类型。 B =字节型,W =字类型
_at_的Save_Tmp DB 16 DUP(?)
Input_Digit ENDP
; --------------- ----------------------
;功能转换为明确的十进制ASCII代码的:AX二进制无符号,并送显示器显示入口:AX =二进制

;出口:显示转换后的ASCII码数字在当前光标位置
Dec_ASCII PROC近
推DX
推BX
推二BR /> MOV BX,10
LEA DI,@ @ Temp_Save [6]
MOV字节PTR [二],'$'
十二月二
CLD
@ @鸿沟:XOR DX,DX
DIV BX
或DL,30H
MOV [DI],DL
十二月二
测试斧头,0FFFFH
JNZ @ @分割
公司二
推二
流行的DX

INT 21H
流行音乐二
弹出BX
>弹出DX
RET
@ @ Temp_Save DB 7 DUP(?)
Dec_ASCII ENDP
; ------------------ -------------------
;二进制AX加法运算
增加近
MOV AX触发,数字
呼叫Dec_ASCII;无符号转换成明确的十进制ASCII码,并发送显示
MOV DL,'+'
呼叫Output_Chr显示一个加号
MOV AX,NUMBER2
呼叫Dec_ASCII;第二个数字显示
MOV DL,'='
呼叫Output_Chr显示等号
MOV AX,数字
添加斧头,NUMBER2;数字+数字→AX BR />呼叫Dec_ASCII;
RET
增加ENDP
-------------------------------------------------------------------------------- ----------
;减法

MOV AX,数字
呼叫Dec_ASCII > MOV DL,“减法PROC近 - “
呼叫Output_Chr显示一个减号
MOV AX,NUMBER2 呼叫Dec_ASCII,第二个数字
MOV DL,'='
呼叫Output_Chr显示的等号
MOV AX,数字
子斧头,NUMBER2;用number1-number2→AX
呼叫Dec_ASCII显示差分
RET
减法ENDP
- ------------------------------------
;乘法(提前好,否则容易导致能够代表范围内的产品超过16个寄存器)

MOV AX多PROC近,数字
呼叫Dec_ASCII
MOV DL,'*' BR />呼叫Output_Chr显示一个乘号
MOV AX,NUMBER2
呼叫Dec_ASCII,第二个数字
MOV DL,'='
调用Output_Chr显示一个等号
MOV AX,数字
MUL NUMBER2数字* NUMBER2→AX
调用Dec_ASCII展示产品(,假设注册产品不超过16,表示的范围)
RET
多ENDP
; ------------------------------------- BR />的除法运算
部PROC近
MOV AX,数字
呼叫Dec_ASCII
MOV DL,'/'
呼叫Output_Chr,显示出分裂的迹象
MOV AX,NUMBER2
呼叫Dec_ASCII;第二个数字
MOV DL,'='
调用Output_Chr显示等号
XOR DX,DX
> MOV AX,数字1
格NUMBER2 Number1/Number2→AX(供应商),DX(I号)
呼叫Dec_ASCII显示的商
试验DX 0FFFFH的整数部分;判断余数为0
JNZ +??3;整除计算的余数在
RET
推DX
的mov cx,6
MOV DL,“
Disp_Dot:呼叫Output_Chr;显示等号
循环Disp_Dot
POP AX;其余
呼叫Dec_ASCII,其余部分
RET
/科ENDP <BR。 -------------------------------------
数字DW?
NUMBER2 DW?
prompt_One数据库“,请第一个数字:,$' prompt_Two DB'请第二个数字:$'
Press_Key DB 13,10,13,10,'complated。按任意键退出... $'
开始:PUSH CS
POP DS
PUSH CS
弹出ES的数据段,附加段和代码段
----- --------------------------------
;输入两个十进制<br的/输出prompt_One提示输入第一个数字
MOV _at_ _at_数字,小数的位数
MOV _at_ _at_ type_data项'W';保存的数据类型。 B =字节型,W =字类型的N位数字
呼叫Output_CTLF接受从键盘输出一个回车
LEA二板数的变量数字地址
呼叫Input_Digit符,换行符
输出prompt_Two提示输入第一个数字
LEA二NUMBER2的变量数字地址
的呼叫Input_Digit是一个N位数字
呼叫Output_CTLF接受从键盘输出回力车,包
呼叫Output_CTLF输出一个回车,换行
; ------------------- ------------------
调用加成;加法运算
呼叫Output_CTLF显示一个回车,换行
调用减法;减法
呼叫Output_CTLF显示一个回车
调用多个包乘
呼叫Output_CTLF显示一个回车,换行
通话部的除法运算
; -------------------------------------
Exit_Proc:输出Press_Key;提示完成后,按任意键以结束该程序
MOV AH,1
INT 21H
MOV AH,4CH;关闭程序
INT 21H

完启动代码完;编译结束
阿尔法
Alpha
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式