用汇编语言编写如下程序:
; 两种方法:1利用p标志,2用子程序用c标志判断 CODE SEGMENT ASSUME CS:CODE BARRAY DB 0FFH,1,1,1,11,2,3,4,5,6,76,54,34,99,77,88,67,98,54,35 N EQU $-BARRAY OSUM DW 0 ESUM DW 0 START: PUSH CS POP DS LEA SI,BARRAY MOV CX,N CLD @1: LODSB ADD AL,0 JP @2 MOV AH,0 ADD OSUM,AX JMP @3 @2: MOV AH,0 ADD ESUM,AX @3: LOOP @1 MOV AX,OSUM CALL DSPAX MOV AX,ESUM CALL DSPAX ;======================= MOV OSUM,0 MOV ESUM,0 LEA SI,BARRAY MOV CX,N CLD @4: LODSB CALL ONENUM CMP AH,1 JE @5 MOV AH,0 ADD OSUM,AX JMP @6 @5: MOV AH,0 ADD ESUM,AX @6: LOOP @4 MOV AX,OSUM CALL DSPAX MOV AX,ESUM CALL DSPAX MOV AH,4CH INT 21H ;================================ DSPAX PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSHF XOR CX,CX MOV BX,10 @DSPAX_1: XOR DX,DX DIV BX INC CX OR DX,30H PUSH DX CMP AX,0 JNE @DSPAX_1 MOV AH,2 @DISPAX_2: POP DX CMP DL,3AH JB @DISPAX_3 ADD DL,7 @DISPAX_3: INT 21H LOOP @DISPAX_2 MOV DL,32 INT 21H POPF POP DX POP CX POP BX POP AX RET DSPAX ENDP;================================ ONENUM: PUSH BX PUSH CX MOV BL,0 MOV CX,8 @ONE1: ROR AL,1 JNC @ONE2 INC BL @ONE2: LOOP @ONE1 MOV AH,0 AND BL,1 JNZ @ONE3 MOV AH,1 ; 偶数 @ONE3: POP CX POP BX RET;============================== CODE ENDS END START
MOV A,30H CJNE A,40H,NEXT: SJMP L1NEXT: JNC L2 SJMP L3 .......
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 SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX
XOR AX,AX ;保存出现次数
LEA BX,ENG
CLD
L1: MOV CX,4 ;这里比SUN的长度大1位
MOV SI,BX
LEA DI,SUN
REPE CMPSB
DEC SI ;回退一个字节
JCXZ L3 ;如果比较次数用完,表示匹配
INC BX
L2: CMP BYTE PTR [BX], '$'
JNE L1
JMP SHORT L4
L3: INC AX
MOV BX,SI
JMP SHORT L2
L4: LEA SI,TOP
MOV BX,10
L5: XOR DX,DX ;转换为十进制字符
DIV BX
OR DL,30H
DEC SI
MOV [SI],DL
CMP AX,0
JNE L5
MOV AH,9
LEA DX,SUN
INT 21H
MOV DX,SI
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
2.
;*************************************
;从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,变革显示技术结果
;*************************************
STACKS SEGMENT
;此处输入堆栈段代码
DW 6 DUP (?)
TOP LABEL WORD
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,SS:STACKS
START:
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP
;此处输入代码段代码
L1: XOR BX,BX ;BX保存非数字字符的数量
MOV AH,1
L2: INT 21H
CMP AL,'$'
JE L4 ;输入$时,输入字符串完毕,计数完毕,输出结果
CMP AL,30H
JB L3
CMP AL,39H
JNA L2 ;输入为0~9之间的数字时,进行下次输入
L3: INC BX
JMP SHORT L2;进行下次输入
L4: MOV AX,BX
MOV BX,10
L5: XOR DX,DX ;转换为十进制数字
DIV BX
OR DX,30H
PUSH DX
CMP AX,0
JNZ L5
MOV AH,2 ;输出结果
MOV DL,' ' ;分隔符
INT 21H
L6: POP DX
INT 21H
CMP SP,OFFSET TOP
JNE L6
MOV DL,' ' ;分隔符
INT 21H
JMP SHORT L1;进行下一个字符串的输入
MOV AH,4CH
INT 21H
CODES ENDS
END START
3.
DATAS SEGMENT
;此处输入数据段代码
GRADE DW 88,75,95,63,98,78,87,78,90,60;自行定义 ;成绩
COUNT EQU ($-GRADE)/2
RANK DW COUNT DUP (1) ;排名,初始值为1,大家都第一名,同一起跑线哈
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV SI,0 ;要排名的学生号码
MOV CX,COUNT
L1:
MOV AX,GRADE[SI] ;获得第SI号学生的成绩
MOV BX,RANK[SI] ;获得第SI号学生的初始排名
MOV DX,CX ;保存CX
MOV DI,0 ;要比较的学生的号码
MOV CX,COUNT
L2:
CMP AX,GRADE[DI] ;逐个比较
JNB L3
INC BX ;低于某一个学生的成绩,则排名加1
L3:
ADD DI,2
LOOP L2
MOV RANK[SI],BX ;保存排名
ADD SI,2
MOV CX,DX
LOOP L1
MOV AH,4CH
INT 21H
CODES ENDS
END START
用汇编语言编写如下程序:
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...
用汇编语言编如下程序
1 JE @5 MOV AH,0 ADD OSUM,AX JMP @6 @5: MOV AH,0 ADD ESUM,AX @6: LOOP @4 MOV AX,OSUM CALL DSPAX
用汇编语言编写下面两个程序
一、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...
如何编写汇编语言的程序?
首先在keil里,设置选项时,在列表选项中的汇编代码一项打勾。见下图 然后编译,编译后,在工程的同一个文件夹下有一个.LST文件,打开就看到了汇编代码,不过,需要自己进行整理,否则,是不能直接作为汇编程序的。 下面是一个例子:这是一个主程序的汇编代码,格式就是这样的。 ; FUNCTION main (BEGIN) ; SOURCE LINE ...
跪求大神用汇编语言编写以下程序,急急急急急急
;将80个成绩,分组计数——用51汇编语言编写,未经调试,供参考 ;===计分模块 MAIN: MOVDPTR,#DATA1;指向成绩表 MOV R2,#80;限80个数据 MOV R3,#00H;保存90以上 MOV R4,#00H;保存80以上 MOV R5,#00H;保存70以上 MOVR6,#00H;保存60以上 MOVR7,#00H;保存60以下 LOOP: MOV...
用汇编语言编写一个简单程序
1.计算U=(X+(Y*Z-100))\/W 其中:X,Y,Z,W均为十六位有符号数。程序如下:DATA SEGMENT X DW 10 ;16位变量 Y DW 20 Z DW 30 W DW 40 U DW ?,?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX,Y IMUL Z ;计算Y*Z,内容放在DX...
编写汇编语言程序
;本程序通过编译,运行正确。datasegment mes1db'92,85,74,81,70,68,65,78,54,43',0ah,0dh db'94,100,83,88,79,83,79,69,62,60',0ah,0dh,'$';定义用于显示的字符串 mes2dw92,85,74,81,70,68,65,78,54,43 dw94,100,83,88,79,83,79,69,62,60;存放20个十进制数 element...
用汇编语言编一个程序
代码如下:; 显示三角形data SEGMENT ORG 100H STAR DB '* ', '$' SPACE DB ' ', '$' ;空格 LINE DB 0DH, 0AH, '$' ;换行data ENDSstack SEGMENT PARA STACK DW 256 DUP(?)stack ENDScode SEGMENT ASSUME CS: code, DS: dataBEGIN: M...
汇编语言编写一个程序,实现如下功能: 当变量X>0时,显示输出语句“This...
mov ax,cs mov ds,ax jmp start string1 db “This is a sample!!”,‘$'string2 db “Error!! invalid parameter!!”,‘$'start:cmp x,0 jg above jnz endd mov dx,string2 mov ah,9 int 21h above:mov dx,string1 mov ah,9 int 21h mov ah,4ch int 21h ...
高分求:用汇编语言编写如下程序:
DEC1 DB 5 DUP(0)BCD1 DB 3 DUP(0)DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0)STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV CH,0 LEA DI,DEC1 MOV AX,BIN1 MOV BX,10 LOP1:XOR DX,DX DIV BX MOV [DI],DL INC DI...
隐信米索: 如下即可: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...
辰溪县15995121069: 用汇编语言写这个程序:计算S=1+2*3+3*4+4*5+…+N(N+1),直到N(N+1)项大于50为止 - ?
隐信米索:[答案] assume cs:codecode segment start: xor ax,ax mov cl,1 mov bx,0 s: xor ah,ah mov al,cl mul al add bx,ax inc cl cmp cl,50 ja result jmp s result: nop mov ax,4c00h int 21hcode endsend start...
辰溪县15995121069: 计算S=1+2+3+···+50, 结果存入AX中用汇编语言编写程序(过程) - ?
隐信米索:[答案] =1275
辰溪县15995121069: 用汇编语言编写一个简单程序?
隐信米索: 1.计算U=(X+(Y*Z-100))/W 其中:X,Y,Z,W均为十六位有符号数. 程序如下: DATA SEGMENT X DW 10 ;16位变量 Y DW 20 Z DW 30 W DW 40 U DW ?,? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ...
辰溪县15995121069: 用汇编语言编写一个程序?
隐信米索:DATA SEGMENT; CR db 0dh,0ah,'$' SSP db 20h,'$' string1 db 'plese input the number:$' string2 db 'the number is(H):$' string3 db 'the number is(B):$' data1 dw 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,...
辰溪县15995121069: 汇编语言:编写下列程序. - ?
隐信米索: dseg segment data1 db '24-56' ; '24+56' 可以计算加或减 data2 db 0 dseg ends cseg segment start: mov ax, dseg mov ds, ax lea si, data1 mov bx, 0 mov dl,0ah ;convert first 2 digital number mov al, [si] sub al, 30H ;the first digital number mul dl mov ...
辰溪县15995121069: 用汇编语言编写程序?
隐信米索: ;MIMA;==================================DATA SEGMENT BUF1 DB 'HAPPY!' BUF3 DB 10, 13, 'PLEASE INPUT PASSWORD : $' BUF4 DB 10, 13, 'ERROR ! $' BUF5 DB 6 DUP(?) BUF6 DB 10, 13, 'WELLCOM ! $' COUNT DB 3...
辰溪县15995121069: 用汇编语言写一小程序?
隐信米索: #include<iostream> using namespace std; void main() { int a[5],i; for(i=0;i<5;i++) { cin>>a[i]; } for(i=0;i<5;i++) cout<<a[i]; }
辰溪县15995121069: 用汇编语言写个程序.计算 z=(w * x)/(y+6),r=余数 其中w,x,y,均为16位无符号数 - ?
隐信米索:[答案] z=(w * x)/(y+6), r=余数 其中w,x,y,均为16位无符号数 MOV BX,Y ADD BX,6 MOV AX,W MOV CX,X MUL CX DIV BX MOV Z,AX MOV R,DX
辰溪县15995121069: 用汇编语言编写下面的程序?
隐信米索: data segment array db 5 dup(?) data ends code segment assume cs:code,ds:data mov ax,data mov ds,ax mov bx,0 mov cx,5 mov dl,1 lop1:mov array[bx],dl inc dl inc bx loop lop1 mov bx,0 mov cx,5 lop2:inc array[bx] inc bx loop lop2