用汇编语言输入一个数,求平方值

发布网友 发布时间:2022-04-23 02:16

我来回答

3个回答

热心网友 时间:2023-09-24 01:03

此程序通过编译,运行正确
代码段
假设CS,DS:验证码:代码
CR EQU 000DH
LF EQU 000AH
KBBack EQU 0008H
-----------------------------------------
函数:string
;显示指定地址(Str_Addr),入口:

; Str_Addr =字符串地址(需要在数据段)
;用法:输出Str_Addr
;用法示例输出PromptStr
输出宏Str_Addr
LEA DX,Str_Addr MOV AH,9
INT 21H
ENDM
; -------- ---------------------------------
功能:输出一个字符
;入口: DL =要显示的字符
Output_Chr近
PUSH AX
MOV AH,02H
INT 21H
POP AX
RET
触发Output_Chr ENDP
; ----------------------------------------- />;功能:输出回车换行
Output_CTLF PROC近
PUSH AX
推DX
MOV AH,02H
MOV DL,0DH
诠释21H
MOV DL,0AH
INT 21H
流行的DX
POP AX
RET
Output_CTLF ENDP
; ------- ----------------------------------
:以光标位置
;入口:无
;出口:DH =行号DL =列数

PUSH AX
PUSH BX
PUSH CX
XOR BX调用GetCursor PROC近, BX
MOV AH,3
INT 10H
MOV CURSOR_ROW,DH
MOV Cursor_Col,DL
POP CX
POP BX
POP AX BR /> RET
CURSOR_ROW DB?
Cursor_Col DB?
调用GetCursor ENDP
; --------------------------------------- -

功能:设置光标位置;入口:CURSOR_ROW =行坐标; Cursor_Col:列坐标)
PROC附近的SetCursor
PUSH DX
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
POP DX
RET
SetCursor ENDP
; -------- ---------------------------------
功能:键盘输入指定的小数位数,以将其转换成一个二进制数,并存储在指定的存储单元中。
;入口:_at_ _at_数字=数字位数; 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,如果斧头
jcxz @ @ Retturn直接输入,不输入任何数字,输入'0'处理
DEC CX实际输入的数字位数减1,准备输入这串数字转换器的二进制数
jcxz _at_ _at_ One_Digit输入数字只有一个转去,直接保存二进制数
MOV BX 10
_at_ _at_ Mul_Ten:LODSB
CBW
添加斧头,BP
MUL BX
MOV BP,斧头
环@ @ Mul_Ten
@ @ :
CBW
添加斧头,BP
@ @ Save_Ret:流行音乐二
CMP @ @ type_data项,'B'; byte类型?
JZ5美元
STOSW
JMP3美元
STOSB
弹出BX
弹出CX
流行的DX
CLC BR /> RET
@ @ Retturn:流行音乐二
弹出BX
弹出CX
流行的DX
STC
RET
@ @数字分贝中位数的十进制数字
_at_“@ type_data项DB'B',保存的数据类型。 B =字节型,W =字类型
_at_的Save_Tmp DB 16 DUP(?)
Input_Digit ENDP
; --------------- --------------------------
Prompt_Str DB'请输入一个分数(0-3digits的):$'的一小部分提示
得分DB存储分数的 Press_Key DB 13,10,13,10,按任意键退出... $'
开始:推CS
POP DS
PUSH CS
弹出ES;
数据段,附加段代码段在同一段 - ---------------------------------------
输入分数
> MOV _at_ _at_数字,3位,小数的位数
MOV _at_ _at_ type_data项'B';保存的数据类型。 B =字节型,W =字类型
Input_Score:输出prompt_Str;提示得分
LEA二,分数,分数存放地址
的呼叫Input_Digit的输入分数
JC @ @ Any_Key,直接回车,不要输入任何数字,最终的方案
MOV DL,10,除了10
MOV AL,分数,提取部分
异啊,啊
DIV升;除了10
CMP AL,5> 5通过
JA4美元
MOV AL,5 <= 5的失败子人,5 $ 5
MOV DL,'F'
测试人0FFH
JZ8美元
CMP AL,5
JZ $ + 4
加人
添加Cursor_Col,6
呼叫SetCursor
子升,人
呼叫Output_Chr;,显示字符
呼叫Output_CTLF;输出一个回车,换行
JMP Input_Score
@ @ Any_Key:输出Press_Key
MOV AH,1
INT 21H
INT 21H
the>的代码结束
END开始,编译结束

热心网友 时间:2023-09-24 01:04

入口条件:待平方数在R2、R3中。
出口信息:结果在R2、R3、R4、R5中。
影响资源:PSW、A、B、R2~R5 堆栈需求: 2字节
MUL2: MOV A,R3 ;计算R3平方
MOV B,A
MUL AB
MOV R4,B ;暂存部分积
MOV R5,A
MOV A,R2 ;计算R2平方
MOV B,A
MUL AB
XCH A,R3 ;暂存部分积,并换出R2和R3
XCH A,B
XCH A,R2
MUL AB ;计算2×R2×R3
CLR C
RLC A
XCH A,B
RLC A
JNC MU20
INC R2 ;累加溢出量
MU20: XCH A,B ;累加部分积
ADD A,R4
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
ADDC A,R2
MOV R2,A
RET
这个程序是通过实测的,你可移植。如果帮助你,哪就太好了。

热心网友 时间:2023-09-24 01:04

利用查表的方法编写Y= X2 (X=0,1,2…9 )的程序。

ORG 1000H
MOV A,30H ;取数到累加器A
MOV DPTR,#SQTAB ;DPTR取得数据表的首地址
MOVC A,@A+DPTR ;查表,取平方值送累加器A
MOV 31H,A ;存结果
SJMP $
SQTAB: DB 0,1,4,9,16,25,36,49,,81
;定义平方表
END

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com