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

作者&投稿:调面 (若有异议请与网页底部的电邮联系)
那位仁兄帮小弟用汇编语言编写一个小程序,谢谢了~

汇编不好写啊,用C吧,现在汇编好少,除非关键部位,否则没有必要。

你的程序我基本看懂了,单个子程序都没有大的问题,但是子程序间的参数传递有点乱
改好的程序如下,不一定正确,你可以试试.....
大家也可以彼此联系,互相交流交流
DSEG SEGMENT
sushu dw 1000 dup(?);存放素数
msgsushu db "all of sushu are:",'$';显示素数的提示信息
DSEG ENDS

CSEG SEGMENT
assume cs:CODE, ds:DATA
MAIN PROC FAR
call jisuan;将1000以内素数的个数存入COUNT单元中
lea dx,offset msgsushu;显示素数的提示信息
mov ah,09h
int 21h
call dispsushu;显示素数
lp1:mov ah,0bh
int 21h
jz lp1
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
jisuan proc near
mov ax, dseg
mov ds, ax
mov cx,2
lea di,sushu
mov bx,2;求从2到1000的素数、素数个数,BL从2到1000变化
next11:
cmp bx,1000
jae tj
mov cx,2;如果BL不能被DL从2到BL-1整除的话,则BL为素数
next12:
cmp cx,bx
jae next13
mov ax,bx
mov dx,00h
div cx
cmp dx,0
jz next14;整除则不是素数
inc cx
jmp next12
next13:
mov [di],bx;是素数,则存入相应单元中
inc di
inc di
next14:
inc bx
jmp next11
tj:ret
jisuan endp
dispsushu proc near
lea si,sushu
mov cx,00h
next21: mov ax,cx
mov bl,10
div bl
cmp ah,0
jnz next22
mov dl,0dh;每行10个素数,行末加回车换行
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
next22:
mov bx,[si];取出一个素数
call disp10;以十进制形式输出
mov dl,20h;每个素数之间加一个空格,便于区分
mov ah,2
int 21h
inc si
inc si
inc cx
cmp cx,1000
jb next21
ret
dispsushu endp

disp10 proc near;该子程序的作用是将BX中的数以十进制形式输出
push cx
mov cx,100d
call dec_div
mov cx,10d
call dec_div
mov cx,1d
call dec_div
pop cx
ret
dec_div proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,2
int 21h
ret
dec_div endp
disp10 endp
CSEG ENDS
END MAIN
其他错误目前还看不出来,以后看出来了再来更改答案
希望对你有所帮助.....

根据该计划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


用汇编语言编写一程序
CR equ 000DH LF equ 000AH KBBack equ 0008H Name_Len equ 18 ;用户名最大长度 Pass_Len equ 8 ;密码最大长度 ; --- ; 将用户名和密码定义为一个结构类型 User Struc ; 成绩单结构类型 User_Name db Name_Len dup(?) ; 用户名 Name_Lenth db ? ;用户...

汇编语言-编写一个加密与解密0~9位字序的程序
; 功能:输出一个字符 ; 入口:dl=要显示的字符 Output_Chr proc Near push ax mov ah,02h int 21h pop ax ret Output_Chr endp ; --- ; 功能:输出回车换行 Output_CTLF proc Near push ax push dx mov ah,02h mov dl,0dh int 21h mov dl,0ah int 21h po...

用汇编语言编写下面两个程序
一、assume cs:code,ds:data data segment bufx db ?bufy db ?bufz db ?data ends code segment start:mov ax,data mov ds,ax mov al,bufx cmp al,bufy jae next mov al,bufy next:mov bufz,al mov ax,4c00h int 21h code ends end start 二、assume cs:code,ds:data data segment...

汇编语言编写程序
Data segment ;定义数据段 ADR DB 100 dup(?) ;假设100个数 NUM EQU $-ADR ;NUM是数据个数 DA1 DB 0 ;DA1用来存放正数的个数,初值为0 DA2 DB 0 ;DA2用来存放负数的个数,初值为0 DA3 DB 0 ;DA3用来存放0的个数,初值为0 DATA ENDS code segment ;定义代...

用汇编语言编一个加法程序
;输入格式必须为A+或-或\/或*B= ;按回车结束运算数为(0~255)DATAS SEGMENT x db 20 dup(?)y db 'chu cuo le','$'DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS MOV DS,AX JMP A KAISHI:;回车换行 MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH INT ...

用汇编语言编写如下程序:
1.;设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUN X X X X X”显示出次数。DATAS SEGMENT ;此处输入数据段代码 ENG DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$'SUN DB 'JKL$'DB 6 DUP (?)TOP LABEL WORD DB '$'DATAS ENDS CODES...

用汇编语言编写一个程序,把X*2的值赋给Y。
DATA SEGMENT X DW 10 Y DW ?,0;第二个字放进位 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX CLC;清除进位标志 MOV AX,X ADD AX,X;完成X*2的操作,而且速度比用MUL快 MOV Y,AX JNC NEXT mov Y+2,1;存储进位 NEXT:MOV AX,4C00H INT 21H CODE ...

请教大神,汇编语言,编写一个统计AX中1的个数的程序,统计结果放在CL中...
ASSUME CS:CODE CODE SEGMENT START:MOV AX,1110011111110001B;假设现在AX有11个1 XOR CX,CX;将CX清零 MOV CH,16 NEXT:TEST AX,0001H; TEST和AND的功能差不多,只是TEST不改变AX的值 ;让0000 0000 0000 0001和AX相与 ;如果结果是0,说明AX的第0位是0 ;否则,说明第0位是1 JZ isZERO ...

急求!请高手帮忙,用汇编语言编写一个加法运算器。请帮我写一个...
DATA SEGMENT X DW ?SYMBOL DB ?Y DW ?Z DW ?DISPINFO1 DB 'NOT YUNSUAN CHAR!','$'DISPINFO2 DB 'YUSHU IS:$'CUAN DW 10000,1000,100,10,1 DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX BINGIN: ...

用汇编语言编程:有一个100字节的元素的数组,其首要地址为ARRAY,将每个...
用循环处理。找一个寄存器(比如SI)指向array,将SI所指向的单元减一,接着SI加一指向下一个字节单元。执行100次即可。程序如下(在masm5.0和Microsoft (R) Overlay Linker Version 3.60环境下调试通过,利用debug看到正确结果):dseg segment array db 10 dup(1,2,3,4,5,6,7,8,9...

滦县13941733418: 用汇编语言编写一个小程序,要求:用基础知识编写 -
喻芳泰诺: 啥小程序呢.1+....+100行否?mov cx,64h xor ax,ax rep add ax,cx ax持有和量

滦县13941733418: 求用汇编语言帮我编一个小程序,要求是一的位十进制数的加减乘除.谢过! -
喻芳泰诺: 根据该计划MASMPlus 1.2集成环境编译,调试,运行正确的. .假设CS,DS:代码:代码小模型代码段 CR EQU 000DHLF EQU 000AHKBBack EQU 0008H---- --------------------------------- 功能:显示的指定地址(Str_Addr的)字符串 BR />;...

滦县13941733418: 用汇编语言编写一个小程序(比如hello,word!)请懂的人帮忙提供源码 -
喻芳泰诺: 您正在看的汇编语言是:hello,world!win32汇编小程序. 首先我们看一个“复杂”的Win32汇编程序 程序用来显示一个消息框 -------------------------------------------------- ;文件名:3.asm .386 .model flat ,stdcall NULL equ 0 MB_OK equ 0 ExitProcess ...

滦县13941733418: 求用汇编语言编一个让字符闪烁的简短的小程序,求代码只要特定字符闪烁就行 -
喻芳泰诺: .ORG 00H AJMP的主 .ORG 23H AJMP的城市轨道交通;串口中断 .ORG 30H ? 主营: MOV SP,#60H MOV R0,#50H MOV TMOD - ,#20H; T1工作 SETB EA的开放总中断 ACALL或URTINIT;串口初始化 或AJMP $;等待串口中...

滦县13941733418: 请高手帮忙编一个汇编的小程序. -
喻芳泰诺: data segment mess1 db 'hello$' mess2 db 'world$' data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax lea dx,mess1 mov ah,9 int 21h mov dl,0dh;回车的ASCII码 mov ah,2 int 21h mov dl,0ah;换行的ASCII码 mov ah,2 int 21h lea dx,mess2 mov ah,9 int 21h mov ah,1 int 21h mov ah,4ch int 21h code ends end start

滦县13941733418: 用汇编语言编写一个程序 -
喻芳泰诺: 如下即可:DATAS SEGMENTTIPS DB 10, 13, 'Please input a number (1~8): $'CRLF DB 10, 13, 36 DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX, DATASMOV DS, AX LOP:LEA DX, TIPSMOV...

滦县13941733418: 急用: 请用汇编编写一个程序.难度适中就可以.目的是要运行时可以实现一个功能
喻芳泰诺: data segment car db 133 ;定义字符图形表db 05h,122,0,0db 05h,122,0,1db 05h,122,0,1db 05h,122,0,1db 05h,122,0,1db 05h,122,0,1db 05h,122,0,1db 05h,122,1,0db 05h,122,1,0db 05h,122,1,0db 05h,122,0,-1db 05h,122,0,-1db 05h,122,0,-1db 05h,122,0,-1db 05h,122,0,-1

滦县13941733418: 跪求1份汇编语言小程序要求有注释,程序长度大概A4纸2,3张的样子,望高手来一份,再次谢了 -
喻芳泰诺: ; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确.Data SegmentBuffer db 20,23,-69,-89,35,-46,57,-68...

滦县13941733418: 用汇编语言编写一个小程序 -
喻芳泰诺: 定义两个变量,都为int类型的! num1*num2就行了,问题是你有没有不同的软件就是了! 不同的语言系统输出或者控制台输出都是不一样的! JAVA中 import java.util.*; public static void main(string[] args) { int num1; int num2; Scanner input = new Scanner(System in); num1=input.nextInt(); num2=input.nextInt(); System.out.println("最后的成绩为!"+num1*num2); }

滦县13941733418: 用汇编语言设计一个简单程序 -
喻芳泰诺: dseg segment a db 2,7,9,3,1 c equ $-a dseg ends assume cs:cseg, ds:dseg cseg segment start: mov ax, dseg mov ds, ax mov cx, c xor bx, bx lea si, a m0: mov al, [si] cmp al, 5 jle m1 inc bx m1: inc si loop m0 mov ax, bx call print mov ax,4c00h int ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网