
1,主程序从键盘输入一个8位的2进制数,对其求求补 *** 作,用子程序对求补后的值以2进制形式显示
CODES SEGMENT
ASSUME CS:CODES
START:
mov bl,0
mov cx,8
loop1:
clc
mov ah,1h
int 21h
cmp al,'0'
jz rotate
stc
rotate:
rcl bl,1
dec cx
jnz loop1
print:
neg bl
mov dl,0dh
mov ah,2h
int 21h
mov dl,0ah
int 21h
mov cx,8
clc
loop2:
rcl bl,1
jnc dis0
mov dl,'1'
jmp display
dis0:
mov dl,'0'
display:
mov ah,2h
int 21h
dec cx
jnz loop2
exit:MOV AH,4CH
INT 21H
CODES ENDS
END START
2,主程序从键盘输入两个四位的十六进制数A和B,用子程序作16进制计算A+B,并显示计算结果(考虑进位,即CF)
DATAS SEGMENT
str1 db 'in put a num:$'
str2 db 'the result is:$'
str0 db 0dh,0ah,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
prints proc
mov ah,9h
int 21h
call getnum
push cx
mov dx,offset str0
mov ah,9h
int 21h
pop cx
ret
prints endp
getnum proc
;cx
mov cl,4
mov ch,4
xor bx,bx
input:
mov ah,1h
int 21h
cmp al,39h
js loop1
sub al,7h
loop1:
mov ah,0
sub al,30h
shl bx,cl
or bx,ax
dec ch
jnz input
mov cx,bx
ret
getnum endp
displaynum proc
;bx
lea dx,str2
mov ah,9h
int 21h
mov cl,4
mov ch,4
jnc dis
mov dl,'1'
mov ah,2h
int 21h
dis:
rol bx,cl
mov dl,bl
and dl,0fh
cmp dl,10
js lop1
add dl,7h
lop1:
add dl,30h
mov ah,2h
int 21h
dec ch
jnz dis
ret
displaynum endp
START:
MOV AX,DATAS
MOV DS,AX
lea dx,str1
call prints
mov ax,cx
push ax
lea dx,str1
call prints
pop ax
add ax,cx
mov bx,ax
call displaynum
MOV AH,4CH
INT 21H
CODES ENDS
END START
要运行汇编程序,可以有很多的方法,也可以用一些专门的软件,但众所周知,汇编的话,是即使用记事本也是可以写出来然后在DOS环境下运行的,只要有MASMEXE和LINKEXE即可,当我们在记事本里写好汇编程序时,应把它保存成asm的格式,如sortasm,然后在开始->运行中输入cmd,转到你存放程序的文件夹,最好所有的文件都是用英文命名,如我的是在D盘的huibian文件夹中
2然后再输入masm 以及你的文件名敲回车,再在默认的情况下连敲三次回车,此时如果有错误和提醒,它会显示,否则就是 0,如图
3再输入link 以及你的文件名,连敲几次回车,这时电脑会自动生成一个你的文件的目标文件,如我的文件名是maxxx
4这时,你就可以直接运行程序 了,如我的运行结果为0054
5当然,如果你觉得你的程序有问题,也可以用debug 进行调试,输入u可以直接看到你的每一步指令,直到出现最后一条 int 21h 为止,记住它前面的地址码,用g跳转可以直接执行到最后一步看到最后结果,如图
1计算U=(X+(YZ-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 ;计算YZ,内容放在DX,AX中
MOV CX,AX
MOV BX,DX
SUB CX,100 ;计算YZ-100
SBB BX, 0
MOV AX,X
CWD ;将X符号扩展,形成DX:AX中的双字
ADD AX,CX ;计算X+(YZ-100),内容放在DX,AX中
ADC DX,BX
IDIV W ;计算(X+(YZ-100))/W
MOV U,AX
MOV U+2,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
以上就是关于汇编语言程序全部的内容,包括:汇编语言程序、如何运行汇编程序、用汇编语言编写一个简单程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)