用汇编语言编写一个不少于100语句的程序

用汇编语言编写一个不少于100语句的程序,内容是67890-12345=55545; 还要在CMD>masm6中显示出来 格式是这样的
67890
12345
55545
求助了,着急的很,拜谢大哥大姐了!
有满意的答案还会追加分的!

ASSUME CS:CODE,DS:DATA

DATA SEGMENT
BUFF DB 10
DB ?
DB 10 DUP(?)
RESULT DW ?
RESULT_SHOW DB 10 DUP(?)
DATA ENDS

CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
LEA DX,BUFF
MOV AH,0AH
INT 21H

MOV DI,0
L0: ;统计一共有多少个数字组成
CMP BYTE PTR DS:[DI+2],0DH
JZ GO
INC DI
JMP L0

GO: ;计算第n个斐波那契数,把数字字符串转换为十进制数
MOV BL,10
MOV AX,1
MOV SI,DI ;为后面判断输入的是不是只输入一个数有用
MOV CX,DI
L2: PUSH AX
SUB BYTE PTR DS:[DI+1],30H
MUL BYTE PTR DS:[DI+1]
ADD RESULT,AX
POP AX
MUL BL
DEC DI
LOOP L2

;分两种情况:1.输入的是1;2.输入的不是1
CMP SI,1
JNZ L7
CMP BYTE PTR RESULT,1
JNZ L7
MOV AX,RESULT
JZ L4

L7: MOV AX,1
MOV BX,0
MOV CX,RESULT
DEC CX

L3: ;第n个斐波那契数存放到AX中
PUSH AX
ADD AX,BX
POP BX
LOOP L3

L4:
;显示这个斐波那契数
MOV DX,0
LEA SI,RESULT_SHOW
MOV DI,0 ;利用DI来累计一共有多少个数字
L5:
MOV CX,10
CALL DIVDW
ADD CL,30H
MOV DS:[SI],CL
CMP AX,0
JZ L6
INC SI
INC DI
JMP L5

L6:
MOV DL,DS:[SI]
MOV AH,2
INT 21H
CMP DI,0
JZ OK
DEC SI
DEC DI
JMP L6

OK:
MOV AX,4C00H
INT 21H

;参数: (AX)=DWORD型低16位数据
; (DX)=DWORD型高16位数据
; (CX)=除数
;返回: (DX)=结果的高16位,(AX)=结果的低16位
; (CX)=余数
;32位除16位,可以防止溢出!

DIVDW: ;子程序定义开始,功能是分离各个数字出来
PUSH AX
MOV AX,DX
MOV DX,0
DIV CX
MOV BX,AX
POP AX
DIV CX
MOV CX,DX
MOV DX,BX
RET ;子程序定义结束

CODE ENDS

END START追问

这个好像不对啊,最后什么都不显示啊

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-11
DIV BL
PUSH AX
MOV AH, 0
MOV BX, OFFSET ASC
ADD BX, AX
MOV DL, [BX]
MOV AH, 2
INT 21H
;------------------------------
POP AX
MOV AL, AH
MOV AH, 0
MOV BX, OFFSET ASC
ADD BX, AX
MOV DL, [BX]

100条汇编语言编一个程序
sti ;开启中断 int 60h ;调用中断程序 int 60h int 60h int 60h int 60h int 60h int 60h int 60h mov ax,4c00h ;标准的结束语句 int 21h main endp ;--- ring proc near push ds ;保存数据 push ax push cx push dx...

汇编语言编制程序,实现从1加到100
最简短的完整程序:CODE SEGMENT ASSUME CS:CODE START:;--- MOV AX, 0 MOV CX, 100 S: ADD AX, CX LOOP S ;---基本的,就上面四行--- MOV AH, 4CH INT 21H CODE ENDS END START

如何用汇编语言写一个从1加到100的程序
参考如下的代码:CODE SEGMENT ASSUME CS:CODESTART:;--- MOV AX, 0 MOV CX, 100S: ADD AX, CX LOOP S;---基本的,就上面四行--- MOV AH, 4CH INT 21HCODE ENDS END START

写一个汇编语言程序,完成100以内十进制数相加运算。
MOV [BX],[SI] ;错误。不允许两个操作数同为存储单元,可改为:MOV [BX],AX或MOV AX,[SI]等 MOV BL,0F5H ;正确 POP CS ;错误。代码段寄存器CS不能作为目的操作数,可改为:POP DS或POP ES等 MOV DX,2000H ;正确 MOV ES,3278H ;错误。立即数不能直接传送给段寄存器,可改为:MOV ...

用汇编语言编一个程序
09H INT 21H LOOP LOOP2LABEL1: POP AX PUSH AX ; 计算第 i 行显示字符数 MOV CX, 15 SUB CX, AX INC CXLOOP3: ; 显示 * 号 MOV DX, OFFSET STAR MOV AH, 09H INT 21H LOOP LOOP3 ; 换行 MOV DX, OFFSET LINE MOV AH, 09H ...

使用汇编语言编写程序从1加到100
SUM DW ?DATA ENDS STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA , SS:STACK START :MOV AX , DATA A MOV DS , AX MOV AX , 0 MOV CX , 100 LOP1 :ADD AX , CX LOOP LOP1 MOV SUM , AX MOV AH , 4CH INT 21H CODE ENDS END START...

如何用汇编语言写一个从1加到100的程序?
你说的应该是dos平台,edit是dos下的记事本。就用windows 的记事本,或者任何文本编辑器写好代码,保存为*.asm格式就可以了。主要程序段大概就是下面这样,结果放在ax,cx是循环用。mov ax,0 mov cx,0 loop1:add ax,cx inc cx cmp cx,101 jnz loop1 ...

用汇编编写:1+2+3+4+5+……+n,和小于100,显示次数。
CODE SEGMENT ;代码段 ASSUME CS: CODE, DS: DATA START:PUSH CS POP DS MOV i, 1 MOV sum, 0 LOP:MOV AX, sum ADD AX, i CMP AX, 100 JNB EXIT MOV sum, AX MOV AX, i CALL PRINTAX MOV DL, ':'CALL PUTC MOV DL, ' 'CALL PUTC MOV AX, sum...

汇编语言程序1+2+3...+100=?
MOV AX,0 MOV CX,100 MOV BX,1 ABC: ADD AX,BX INC BX LOOP ABC --- 或者 MOV AX,0 MOV CX,100 ABC: ADD AX,CX LOOP ABC ---

谁能教我用汇编语言编一个从1加到100的程序,,并用十进制在屏幕输出
这还不简单,程序如下:data segment abc dw data ends code segment assume cs:code,ds:data main proc far mov ax,data mov ds,ax mov ax,1 ;给ax赋初值 mov cx,99 ;总共循环99次 lop: inc ax ;ax增加1 add abc,ax ;相加,最终的结果就在变量abc里 loop lop ;...

相似回答