汇编语言程序

汇编语言程序,第1张

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

以上就是关于汇编语言程序全部的内容,包括:汇编语言程序、如何运行汇编程序、用汇编语言编写一个简单程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9312191.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存