汇编语言,最好写出整个程序代码,关键在于两个子程序的代码,一定要带注释!!!谢!高分求
将DATA SEGMENT...ENDS
改为DATA SEGMENT ...DATA DNDS
编译、链接、运行如下
STACK SEGMENT STACK 'STACK'
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV CX,8
AGAIN:SHL BL,1
MOV DL,0
ADC DL,30H
MOV AH,2
INT 21H
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START
以下子程序假设默数组认放在DS段中,其中的数据为dw型。调用子程序前的参数设置:BX中存放数组的起始偏移地址,CX中存放数组的长度。调用子程序后,数组的最大值放在CX中。
array_max: push ax
mov ax,[bx] ;把数组第一个数放到ax中
find: cmp ax,[bx] ;把ax中的数与数组中的数逐个进行比较
ja next ;如果ax中的数比数组中当前的数大则转到next
mov ax,[bx] ;如果ax中的数小于或等于数组中当前的数,则进行替换
next: add bx,2 ;对比下一个数
loop find
mov cx,ax ;把找出的最大值放入cx中
pop ax
ret
; 输入的五位数字,第一位为符号位,当符号位为0时为正数,否则为负数
; 后四位为参数计算的数字,输出结果同上
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
input1 db 'Input first number! ','$'
input2 db 'Input second number! ','$'
result db 'result is : ','$'
; 21号中断10号例程,存放输入数据
add1 db 6 ; 缓冲区最大容量
db ? ; 实际上接收字符的个数,不包括最后的回车
db 6 dup (?) ; 存放输入的字符,回车结尾
add2 db 6
db ?
db 6 dup (?)
num dw ? ; 存放中间结果
sign db ? ; 两个数和的符号位
sum dw 10 dup (?) ; 两个数的和
datasg ends
stacksg segment
stacksg ends
codesg segment
start: mov ax,datasg
mov ds,ax
lea dx,input1
mov ah,9
int 21h
; 读取第一个加数
mov dx,offset add1
mov ah,10
int 21h
; 取光标位置,ah为行,al为列
mov ah,3
mov bh,0
int 10h
; 设置光标位置
mov ah,2
mov bh,0
inc dh
mov dl,0
int 10h
lea dx,input2
mov ah,9
int 21h
; 读取第二个加数
mov dx,offset add2
mov ah,10
int 21h
; 取光标位置,ah为行,al为列
mov ah,3
mov bh,0
int 10h
; 设置光标位置
mov ah,2
mov bh,0
inc dh
mov dl,0
int 10h
lea bx,add1
mov ax,[bx+1]
mov ah,0
dec ax ; 除去符号位,得到数字个数
push ax ; 压入字符数量
add bx,3
push bx ; 压入字符串首地址
call DeciToBina
lea bx,add1
mov dl,[bx+2] ; 取输入的数字的符号位
cmp dl,'0'
jz posi1
neg ax ; 符号位不为0,则表示负数,所以求补得到负数
posi1:
lea bx,num
mov [bx],ax ; 保存第一个数
lea bx,add2
mov ax,[bx+1]
mov ah,0
dec ax
push ax ; 压入字符数量
add bx,3
push bx ; 压入字符串首地址
call DeciToBina
lea bx,add2
mov dl,[bx+2]
cmp dl,'0'
jz posi2
neg ax
posi2:
lea bx,num
add [bx],ax ; 保存两个数相加的结果
lea dx,result
mov ah,9
int 21h
lea bx,num
mov ax,[bx] ; 取出两个数的和
push ax ; 保存一个备份
; 测试结果的符号位
and ax,1000000000000000b ; 取最高位
neg ax
sbb ax,ax
neg ax ; ax的值是0或1
add ax,30h ; 转为0或1的ascii码
lea bx,sign
mov [bx],al ; 存入符号位
pop ax ; 取出备份
cmp byte ptr [bx],30h ; 测试结果是否为正数
jz posi
neg ax ; 不为正,则求补取绝对值
posi:
push ax ; 压入第二个参数,即待转换的十六进制数的绝对值
lea di,sum
push di ; 压入第一个参数,接收结果的缓冲区
call BinaToDeci
lea dx,sign
mov ah,9
int 21h
mov ax,4c00h
int 21h
; ***********************************************************************
; 作用:将十六进制数,转为十进制字符,用以输出
; 形式:void BinaToDeci( [buff], int ),从右向左依次压入堆栈
; 参数1:第一个参数 [buff]:接收结果的缓冲区地址
; 参数2:第二个参数int :待转换的十六进制数字
; 返回值:无,直接保存到内存中
; ***********************************************************************
BinaToDeci proc
push bp
mov bp,sp
push ax
push bx
push cx
push dx
mov cx,0 ; 初始化计数器,记录循环次数,即十进制数的位数
mov ax,[bp+6] ; 取出传入的待转换十六进制数,段内调用只加6,段间调用加8
; 计算出十进制各位数字,并保存到堆栈
bina_next:
xor dx,dx
mov bx,10
div bx
push dx
inc cx
cmp ax,0
jz bina_end
jmp bina_next
bina_end:
mov bx,[bp+4] ; 取出保存十进制数的缓冲区首地址
; 将十进制的各个位数转换成ascii码,并存入指定的内存区域
bina_next2:
pop ax
add ax,30h
mov byte ptr [bx],al
inc bx
loop bina_next2
; 字符串以'$'结尾,用以调用21号中段的9号例程
mov byte ptr [bx],'$'
pop dx
pop cx
pop bx
pop ax
mov sp,bp
pop bp
ret 4
BinaToDeci endp
; ***********************************************************************
; ***********************************************************************
; 作用:将十进制字符,转换为十六进制数,用以计算
; 形式:void DeciToBina( [buff], int ),从右向左依次压入堆栈
; 参数1:第一个参数 [buff]:放置十进制数字字符串的缓冲区的首地址
; 参数2:第二个参数int :十进制字符串的字符个数
; 返回值:十六进制的数字
; ***********************************************************************
DeciToBina proc
push bp
mov bp,sp
push bx
push cx
push dx
push si
mov bx,[bp+4] ; 取放置十进制字符串缓冲区的首地址
mov cx,[bp+6] ; 十进制数字字符串的字符个数
xor ax,ax
; 将ascii码还原为数字,并保存到堆栈
deci_next:
mov al,byte ptr [bx] ; 依次取缓冲区内的字符
sub al,30h
push ax
inc bx
loop deci_next
mov cx,[bp+6] ; 再次获得字符的个数
xor ax,ax
xor dx,dx
mov bx,1 ; 用作乘数
xor si,si
; 各位相乘然后累加获得十六进制数值
; 结果=个位*1+十位*10+百位*100+千位*1000
deci_next1:
pop ax ; 取出数字
mul bx ; 相乘
add si,ax ; 累加结果
; 计算下次相乘时的乘数
mov ax,bx
mov bx,10
mul bx
mov bx,ax
loop deci_next1
; 将结果存入ax,为返回值
mov ax,si
pop si
pop dx
pop cx
pop bx
mov sp,bp
pop bp
ret 4
DeciToBina endp
; ***********************************************************************
codesg ends
end start
=====================================================
masm5测试通过
试一下要多久,现在开始,阿门。。。
emu8086编译测试通过,附运行测试截图
====================================
; multi-segment executable file template.
data segment
; add your data here!
oper1 dw 0000h
;oper2
sum db 5 dup(00h)
altemp db 00h
message1 db 'The first number :','$'
message2 db 'The sec0nd number :','$'
message3 db 'The sum of them is:','$'
message4 db 0dh,0ah,'The input number begins with - or + and end with enter or four bits','$'
message5 db 'Press ESC to exit or any other key to contiune','$'
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
;inputoper1:
call newlinebegin
lea dx, message1
mov ah, 09h
int 21h ; output string at ds:dx
call readsign; the sign would be in dl(zero label '-';nzero label '+')
call readabsval; the asbval would be in bx
cmp dl,00h
jz negative1
mov oper1,bx
jmp inputoper2
negative1:
xor ax,ax
sub ax,bx
mov oper1,ax
inputoper2:
call newlinebegin
lea dx, message2
mov ah, 09h
int 21h ; output string at ds:dx
call readsign; the sign would be in dl(zero label '-';nzero label '+')
call readabsval; the asbval would be in bx
cmp dl,00h
jz negative2
mov ax,bx
jmp out_result
negative2:
xor ax,ax
sub ax,bx
out_result:
push ax
call newlinebegin
lea dx, message3
mov ah, 09h
int 21h ; output string at ds:dx
pop ax
;ax=oper2
mov bx,oper1 ;bx=oper1
add ax,bx ;ax=sum of oper1 and oper2
call outresult;
call newlinebegin
lea dx, message5
mov ah, 09h
int 21h ; output string at ds:dx
mov ah,08h
int 21h
cmp al,1bh
jz exit
call newlinebegin
lea dx, message4
mov ah, 09h
int 21h ; output string at ds:dx
jmp start
exit:
mov ax, 4c00h ; exit to operating system.
int 21h
;---------------------------------------
;call readabsval
readabsval proc near
;in: none
;out: bx=the operator
push ax
push cx
push dx
xor bx,bx
mov cx,04h
max4bcd:call readchar_numorenter
cmp al,0dh
jz readabsvalout
mov altemp,al
mov ax,bx
mov bx,0ah
mul bx
mov bx,ax
mov al,altemp
xor ah,ah
add bx,ax
loop max4bcd
readabsvalout:
pop dx
pop cx
pop ax
ret
readabsval endp
;---------------------------------------
;call readchar_numorenter
readchar_numorenter proc near
;in: none
;out: al=the numval or enter
push dx
readchar_numorenterredo:mov ah,08h
int 21h
cmp al,0dh
jz readchar_numorenterout
cmp al,30h
jl readchar_numorenterredo
cmp al,39h
jg readchar_numorenterredo
mov ah,02h
mov dl,al
int 21h
sub ax,0230h
readchar_numorenterout:
pop dx
ret
readchar_numorenter endp
;---------------------------------------
;call readsign
readsign proc near
;in: none
;out: dl= zero - or nzero +
push ax
rereadsign:
mov ah,08h
int 21h
cmp al,2bh
jz oppsign
cmp al,2dh
jz negsign
jmp rereadsign
negsign:
mov dl,2dh
mov ah,02h
int 21h
xor dl,dl
pop ax
ret
oppsign:
mov dl,2bh
mov ah,02h
int 21h
mov dl,01h
pop ax
ret
readsign endp
;---------------------------------------
;call outresult;
outresult proc near
mov bx,ax
js outnegtive
mov dl,2bh
jmp outresultval
outnegtive:
mov dl,2dh
neg bx
outresultval:
;outsign
mov ah,02h
int 21h
;out absval
lea di,sum
add di,04h
mov ax,bx
mov bx,0ah
mov cx,05h
sent: xor dx,dx
div bx
add dl,30h
mov [di], dl
dec di
loop sent
lea si,sum
mov bl,00h;as a flat of head zero
mov ah,02h
mov cx,05h
out_Dnum: mov dl,[si]
cmp dl,30h
jnz outnum
test bl,01h
jnz outnum
cmp cx,01h
jz outnum
jmp outvalcontinue
outnum:mov bl,01h
int 21h
outvalcontinue: inc si
loop out_Dnum
ret
outresult endp
;---------------------------------------
;call newlinebegin
newlinebegin proc near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
newlinebegin endp
ends
end start ; set entry point and stop the assembler.
====================================
masm5.0测试通过版本
data segment
oper1 dw 0000h
sum db 5 dup(00h)
altemp db 00h
message1 db 'The first number :','$'
message2 db 'The sec0nd number :','$'
message3 db 'The sum of them is:','$'
message4 db 0dh,0ah,'The input number begins with - or + and end with enter or four bits','$'
message5 db 'Press ESC to exit or any other key to contiune','$'
data ends
stack segment
dw 128 dup(0)
stack ends
code segment
assume cs:code,ds:data,ss:stack,es:data
start:
mov ax, data
mov ds, ax
mov es, ax
call newlinebegin
lea dx, message1
mov ah, 09h
int 21h
call readsign
call readabsval
cmp dl,00h
jz negative1
mov oper1,bx
jmp inputoper2
negative1:
xor ax,ax
sub ax,bx
mov oper1,ax
inputoper2:
call newlinebegin
lea dx, message2
mov ah, 09h
int 21h
call readsign
call readabsval
cmp dl,00h
jz negative2
mov ax,bx
jmp out_result
negative2:
xor ax,ax
sub ax,bx
out_result:
push ax
call newlinebegin
lea dx, message3
mov ah, 09h
int 21h ; output string at ds:dx
pop ax
;ax=oper2
mov bx,oper1 ;bx=oper1
add ax,bx ;ax=sum of oper1 and oper2
call outresult;
call newlinebegin
lea dx, message5
mov ah, 09h
int 21h ; output string at ds:dx
mov ah,08h
int 21h
cmp al,1bh
jz exit
call newlinebegin
lea dx, message4
mov ah, 09h
int 21h ; output string at ds:dx
jmp start
exit:
mov ax, 4c00h ; exit to operating system.
int 21h
;---------------------------------------
;call readabsval
readabsval proc near
;in: none
;out: bx=the operator
push ax
push cx
push dx
xor bx,bx
mov cx,04h
max4bcd:call readchar_numorenter
cmp al,0dh
jz readabsvalout
mov altemp,al
mov ax,bx
mov bx,0ah
mul bx
mov bx,ax
mov al,altemp
xor ah,ah
add bx,ax
loop max4bcd
readabsvalout:
pop dx
pop cx
pop ax
ret
readabsval endp
;---------------------------------------
;call readchar_numorenter
readchar_numorenter proc near
;in: none
;out: al=the numval or enter
push dx
readchar_numorenterredo:mov ah,08h
int 21h
cmp al,0dh
jz readchar_numorenterout
cmp al,30h
jl readchar_numorenterredo
cmp al,39h
jg readchar_numorenterredo
mov ah,02h
mov dl,al
int 21h
sub ax,0230h
readchar_numorenterout:
pop dx
ret
readchar_numorenter endp
;---------------------------------------
;call readsign
readsign proc near
;in: none
;out: dl= zero - or nzero +
push ax
rereadsign:
mov ah,08h
int 21h
cmp al,2bh
jz oppsign
cmp al,2dh
jz negsign
jmp rereadsign
negsign:
mov dl,2dh
mov ah,02h
int 21h
xor dl,dl
pop ax
ret
oppsign:
mov dl,2bh
mov ah,02h
int 21h
mov dl,01h
pop ax
ret
readsign endp
;---------------------------------------
;call outresult;
outresult proc near
mov bx,ax
js outnegtive
mov dl,2bh
jmp outresultval
outnegtive:
mov dl,2dh
neg bx
outresultval:
;outsign
mov ah,02h
int 21h
;out absval
lea di,sum
add di,04h
mov ax,bx
mov bx,0ah
mov cx,05h
sent: xor dx,dx
div bx
add dl,30h
mov [di], dl
dec di
loop sent
lea si,sum
mov bl,00h;as a flat of head zero
mov ah,02h
mov cx,05h
out_Dnum: mov dl,[si]
cmp dl,30h
jnz outnum
test bl,01h
jnz outnum
cmp cx,01h
jz outnum
jmp outvalcontinue
outnum:mov bl,01h
int 21h
outvalcontinue: inc si
loop out_Dnum
ret
outresult endp
;---------------------------------------
;call newlinebegin
newlinebegin proc near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
newlinebegin endp
code ends
end start ; set entry point and stop the assembler.
=======================================
测试运行截图:
;编写一个程序,能从键盘读入两个5位十进制数(1位符号位和4位数值位),并将这两个;
十进制数分别转换为二进制数,然后求其和,再将和以十进制形式进行显示。
;
;要求:提示从键盘输入第一个数,按回车完成输入;然后提示从键盘输入第二个数,按回
;车完成输入。然后显示输入的两个数的和。能够从键盘输入-9999~+9999之间的数值。
;相互转化那个功能要用两个子程序(即十进制变二进制、二进制变十进制)完成,
;本人就是在这个子程序这里,不太会多位数字的转换,.....急求!!!!!!!!
;用MASM5.0编译通过
data segment
S0 DB 0DH,0AH,'<CTRL> + <C> TO EXIT. ',0DH,0AH,24H
s1 db 0dh,0ah,'Enter first NUM: $'
s2 db 0dh,0ah,'Enter second NUM: $'
S3 DB 0DH,0AH,24H
ADD_S DB ' (+) $'
D1 DW 0 ;输入的第一个数
D2 DW 0 ;输入的第二个数
D3 DW 0 ;两数相加的结果
T DW 0 ;输入数字的临时存放位置
FU DB 0 ;正负号,0为正 1为负
COUNT DB 0 ;数位计数器 (限于4位)
data ends
code segment
assume cs:code, ds:data
main proc far
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
;-------------------------
MOV AH,9
MOV DX,OFFSET S0
INT 21H
AGAIN:
mov ah,09
mov dx ,offset s1
int 21h
call input
MOV AX,T
MOV D1,AX
mov ah,09
mov dx ,offset s2
int 21h
call input
MOV AX,T
MOV D2,AX
ADD AX,D1
MOV D3,AX
mov ah,09
mov dx ,offset s3
int 21h
MOV AX,D1
ADD AX,D2
MOV AX,D1
CALL DISP
MOV AH,9
MOV DX,OFFSET ADD_S
INT 21H
MOV AX,D2
CALL DISP
MOV AH,2
MOV DL,'='
INT 21H
MOV AX,D3
CALL DISP
;-------------------------
JMP AGAIN
ret
main endp
;=============
input proc near
mov ax,0 ;初始化
mov T,AX
MOV FU,AL
MOV COUNT,AL
;
NEXT:
MOV AH,08 ;不回显输入(可CTRL+C中断)
INT 21H
CMP AL,0DH
JNZ N1
JMP SAVE ;回车输入完毕
N1:
MOV AH, COUNT ;是否输入了4位数
CMP AH,4
JE NEXT ;已达4位,不允许再输入
CMP AL,'-'
JNE PD0_9
MOV AH,FU ;检测到输入'-',检查先前是否已输入过
CMP AH,0
JNE NEXT ;FU=0 未输入'-' ,FU=1 已输入'-'
MOV BX,T ;如果前面已输入数字位,则不允许在数字中间再输入"-"
CMP BX,0
JA next
FU_INC:
INC FU ;置FU=1 表示已输入'-'
MOV AH,2
MOV DL,AL
INT 21H
JMP NEXT
PD0_9:
CMP AL,'0' ;只允许输入0-9
JB NEXT
CMP AL,'9'
JA NEXT
PUSH AX
MOV DL,AL ;显示输入的0-9
MOV AH,2
INT 21H
POP AX
SUB AL,30H ;以下: T <= [将已输入在T中的数 * 10d + 现在输入的数]
PUSH AX
MOV AX,T
MOV BX,10
MUL BX
POP BX
MOV BH,0
ADD AX,BX
MOV T,AX
INC COUNT ;输入位数计数器+1
JMP NEXT
SAVE: ;保存输入的数据
MOV BX,T
MOV AL,FU
CMP AL,0
JE SAVE1
NEG BX ;若输入的是负数,则求补
SAVE1:
MOV T,BX
RET
input ENDP
;================
DISP PROC NEAR ;以10进制显示数字
TEST AX,8000H ;高位为1是负数,否则为正
JZ ZZ
NEG AX ;数字为负,求补
PUSH AX
MOV AH,2
MOV DL,'-' ;显示"-"
INT 21H
POP AX
ZZ: ;数字为正
MOV DX,0
MOV BX,10000 ;转换成10进制的万位数值
DIV BX
PUSH DX
MOV AH,2
MOV DL,AL
ADD DL,30H
INT 21H
POP AX
MOV DX,0
MOV BX,1000 ;转换成10进制的千位数值
DIV BX
PUSH DX
MOV AH,2
MOV DL,AL
ADD DL,30H
INT 21H
POP AX
MOV BL,100 ;转换成10进制的百位数值
DIV BL
PUSH AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
POP AX
MOV AL,AH
MOV AH,0
MOV DL,10 ;转换成10进制的十位和个位数值
DIV DL
ADD AX,3030H
PUSH AX
MOV DL,AL
MOV AH,2
INT 21H
POP DX
MOV DL,DH
MOV AH,2
INT 21H
RET
DISP ENDP
;================
code ends
end start
呵呵,看到这里想起了以前学校搞个这些东东,也搞出来了。说句实话搞这些真的一点都没用!
除非毕业后你是搞X86asm,搞单片机的最好学习单片机方面的知识,比这实用多。
...然后按相反顺序打印。c语言 最好讲讲讲的越详细越好
include<stdio.h>int main(){int a[8];int i;for(i=0;i<8;i++)scanf("%d",&a[i]);for(i=7;i>=0;i--)printf("%d ",a[i]);return 0;}一看就懂的
用汇编语言编写一个程序求出6个有符号整数中的最大值并输出,这6个数从...
===; 字数组求最大值 MAXINT PROC NEAR ; 数组长度置入cx,字数组首地址置入 si PUSH AX PUSH CX PUSH SI PUSHF MOV WORD PTR MAX_INT,-32768 CLD @MAXINT1: MOV AX,[SI] CMP...
51单片机编程,最好用c语言。急求~急急急~ 把长度为50的无符号整数数组放...
参考:http:\/\/hi.baidu.com\/do_sermon\/item\/65af71290819959eb6326365 下列这段程序:\/\/--- void display(void) \/\/显示函数 { char code table[] = { \/\/共阴数码管的段码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x...
学习编程难吗?
第一门编程语言C语言,C语言目前是底层应用开发最为广阔的一门编程语言,是物联网必备的开发语言。第二门编程编程java,java目前的优势比较多,在开发安卓方面目前非常成熟,市场上几乎所有安卓APP都是java开发,再者java在网站开发也有自己的优势,大型类网站选择java开发是最好不过了,支持多线程高并发,...
编程需要学什么?
5、Java:是较为传统的面向对象语言,特点是支持跨平台的开发。Jav语言是基于面向对象的思想来设计的 , 但是删去了C+中几乎不用或很难用好的一些面向对象的特征。Jav语言随着互联网的发展逐渐流行,而且大量的开源框架和类库支持Java在各个场景的开发实践。6、Swift:Swift是Apple发布的一门编程语言,用来...
2020年最值得学习的5大编程语言
今天给大家盘点2020年最值得学习的五大编程语言,掌握了这些语言你不仅能顺利找到一份好的工作,而且还没有相关学历要求。在盘点中,我们主要考虑了以下三方面,对语言进行排名,分别是:一、要学多久 即学习、掌握这门语言所要的时间,从零基础的小白入门,最终能做出实际的项目。二、市场需求 市场对这...
...我讲清楚点C语言各种语言是什么,用什么编啊,最好给我点例
二.学好C语言的四种程序结构 (1)顺序结构 顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。例如;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为...
学软件开发需要学什么语言最好?
4.C++:C++是一种面向对象的编程语言,广泛应用于系统开发、游戏开发、嵌入式系统等领域。5.C#:C#是一种由微软开发的面向对象编程语言,主要用于Windows应用程序开发和游戏开发。6.Swift:Swift是苹果公司开发的编程语言,用于iOS和Mac应用程序的开发。选择哪门编程语言学习最好,取决于你的兴趣、学习目标...
用c++语言编出下列问题的代码,急需,在线等,最好用dev c++。
include <iostream>using namespace std;int main() {for (int i1 = 0; i1 < 10; ++i1) for (int i2 = i1 ? i1 + 1 : 0; i2 < 10; ++i2)for (int i3 = i2 ? i2 + 1 : 0; i3 < 10; ++i3)for (int i4 = i3 ? i3 + 1 : 0; i4 < 10; ++i4)for (...
学编程学什么语言好
编程先学逻辑,就是先执行什么后执行什么,能得出什么样的结果。接下来是学语法,比如for,if,while这些,都是根据不同语种学习不同的内容;到了高阶就开始学习算法,因为算法可以协助做自己的框架,引擎等。用简单的话来说,编程就是学习。一门计算机语言好比大家学习英文是为了跟外国人打交道,学习...
再虽盐酸: ;求Z=|X-Y| Dseg segment;数据段 x db 40h y db 98h z db ?Dseg ends sseg segment para stack;堆栈段 db 80h dup(0) sseg ends ;代码段 cseg segment assume cs:cseg,ds:dseg,ss:sseg;伪指令声明每个段与一个段寄存器建立一种对应关系...
南川市18591166946: 汇编语言写一个开关程序 - ?
再虽盐酸: ORG 0000H LJMP MAIN ORG 0030H MAIN: JB P0.1,MAIN1 LCALL DELAY JB P0.1,MAIN1 JNB P0.1,$ CPL P1.1 SJMP MAIN MAIN1: JB P0.2,MAIN LCALL DELAY JB P0.2,MAIN JNB P0.2,$ CPL P1.2 SJMP MAIN DELAY: MOV R2,#20 DLY: MOV R3,#250 DJNZ R3,$ DJNZ R2,DLY RET END
南川市18591166946: 汇编语言是什么类型的语言好编什么程序 - ?
再虽盐酸: 汇编语言(Assembly Language)是面向机器的程序设计语言.汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言.汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇...
南川市18591166946: 谈谈对汇编语言的认识 - ?
再虽盐酸: 通过两节课的学习,我了解到汇编语言是直接在硬件之上工作的编程语言.首先要了解的是机器语言,机器语言是机器指令的集合,机器指令展开来讲就是一台机器可以正确执行的命令.早期的程序员们很快就发现了使用机器语言带来的麻烦,...
南川市18591166946: 一个汇编语言程序,急求急求!! - ?
再虽盐酸: 下列程序,经过实验验证,可以满足题目要求.;------------------------------ DATA SEGMENT X DB 80 DUP (0) ;预留80个字符的空间.DATA ENDS;------------------------------ CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA ...
南川市18591166946: 汇编语言可以写哪些程序? - ?
再虽盐酸: 一切程序,只要你想到的,汇编都可以写,不过就是代码量很大. 所以除非系统核心和引导程序,还有极端追求性能的,一般都不用汇编写.
南川市18591166946: 关于对汇编语言的认识 - ?
再虽盐酸: 没有捷径,多看多写,我曾自学完汇编语言,使用 王爽的那本书,然后是 钱晓婕的书,要想学好就多看书,多联系.知道看花容易绣花难吗??只看不动手永远学不好 汇编,确实很重要,如果懂的汇编,那些C语言的秘密也会暴光的.介绍本...
南川市18591166946: 汇编语言程序的开发有哪4个步骤 - ?
再虽盐酸: 分析问题、画流程图、转化为程序、上机编辑调试运行
南川市18591166946: 用汇编语言写出 3*5 - 4 - ?
再虽盐酸: 跟你说, 在汇编语言中计算这个要写很长的代码,计算这么无聊的数字,还不如去学易语言.A bd 3 B db 5 C db 4 //常量声明 MOV AX,A MOV AL,AX MOV BX,B MOV BL,BX MUL BL //吧BL与AL相乘,结果默认放在AX中 MOV CX,C SUM AX,CX//上述代码就把结果存到 AX寄存器中了,要把AX的类容输到屏幕上要很长代码!!不再写了 我还是先学VC++吧!!!!!
南川市18591166946: 单片机汇编指令是如何实现程序的整个过程的? - ?
再虽盐酸: ORG 0000H AJMP MAIN ORG 0050H MAIN: MOV DPTR,#NUM MOV 41H,#0 MOV 42H,#1 MOV 43H,#2 MOV 44H,#3 MOV R7,#100 LOOP0: MOV R0,#41H MOV P2,#0F7H MOV R4,#4 LOOP1: MOV A,@R0 MOVC A,@A+DPTR MOV P0,A ...