汇编程序例题及讲解(汇编程序)

:暂无数据 2026-07-21 12:20:10 1

汇编程序例题及讲解(汇编程序)

各位老铁们,大家好,今天由我来为大家分享汇编程序例题及讲解,以及汇编程序的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

汇编程序

(1)BEGIN: IN AL,5FH ;从5F端口读取一个8位二进制数据放入AL中
TEST AL,80 ;比较AL最高位是否是1
JZ NEGATIVE ;如果不是1就跳转到NETATIVE,让AH最高位都置1
MOV AH,0 ;如果是AL最高位为1说明AL是负数,AH=0
JMP STOP ;跳转到STOP
NEGaTIVE:MOV Ah,0FFH ;AH都为1
STOP: HLT ;HLT使CPU静止,进入不读取指令,不写数据状态
(2)STRAT: IN AL,20H ;从20端口读取数据放入AL
MOV BL,AL ;将AL保存到BL
IN AL,30H ;从30端口读取数据
MOV CL,AL ;将AL数据保存到CL,作为循环的次数
MOV AX,0 ;AX清零
REPEAT:ADD AL,BL ;这里开始将BL和AL相加,实际在循环中就是累加
ADC AH,0 ;得到进位
DEC CL ;CL递减
JNZ REPEAT ;如果CL为0就退出循环,非零则循环,实现累加
HLT ;(同上个程序)

把下面 简单 汇编程序 加上详细注释

program segment
main proc far
assume cs:program
start:push ds ;这三条指令是为了能正确返回操作系统
sub ax,ax
push ax
input:mov ah,01 ;调用中断从键盘输入一个字符,字符的ASCII码在AL中
;mov ah,07
int 21h
cmp al,’q’ ;比较输入的字符是否为’q’,是则跳到标号quit
je quit
mov dl,al
mov ah,02 ;如果不是’q’则调用中断输出到屏幕
int 21h
jmp input ;跳到标号input继续输入字符
quit:ret ;退出程序
main endp
program ends
end start
2.输出十六进制1EC8
data_seg segment
DATAX dw 1CE8H
data_seg ends
code_seg segment
main proc far
assume cs:code_seg,ds:data_seg
start:
push ds ;这三条指令是为了能正确返回操作系统
sbb ax,ax
push ax
mov ax,data_seg ;将数据段的段地址放入DS中
mov ds,ax

mov bx,DATAX ;将变量DATAX中的数放入BX中
mov ch,4
rotate:
mov cl,4 ;CL中的数是为了使用移位指令,大小为移的位数
rol bx,cl;将BX中的数循环左移4位,即相当于把BX中高4位放在了低4位,移后
;的结果相当于CE81H(第一次)
mov al,bl;此时AL中为81H(第一次)
and al,0fh;将AL中的高4位清零即变成01H(第一次)
add al,30h;将AL加上30H得到数字的ASCII码
cmp al,3ah;比较AL中是否是数字,不是说明是字母A...F
jl print_it;是则跳到print_it直接输出
add al,7h;将AL再加7得到相应字母的ASCII码
print_it:
mov dl,al ;将数字输出到屏幕
mov ah,02h
int 21h
dec ch;循环次数减1
jnz rotate;若循环没结束则跳到totate继续执行
mov ah,07;等待输入,程序暂停
int 21h
ret ;程序结束
main endp
code_seg ends
end start
3.求1加2的和
data_seg segment
a db ?
b db ?
data_seg ends
code_seg segment
main proc far
assume cs:code_seg,ds:data_seg
start:push ds ;作用同以上程序
sub ax,ax
push ax
mov ax,data_seg
mov ds,ax
mov a,1 ;分别将变量a,b赋值1,2
mov b,2
mov al,a;将a的值放入AL中
add al,b;将AL中的值 与b相加,结果放在AL中
mov dl,al;相加结果放入DL中以便用中断输出
add dl,30h;得到数字的ASCII码
;or dl,30h
mov ah,2
int 21h;输出到屏幕
mov ah,07;程序暂停,等待按键,然后结束
int 21h
ret
main endp
code_seg ends
end start

简单的汇编语言程序解析

data segment ;定义数据段
string1 db ’Move the cursor backward’ ;比较字符串1
string2 db ’Move the cursor backward’ ;比较字符串2
mess1 db ’Match.’,13,10,’$’ ;比较结果1
mess2 db ’No Match!’,13,10,’$’ ;比较结果2
data ends ;数据段结束
code segment ;定义代码段
main proc far ;定义一个过程(类似C的函数)
assume cs:code,ds:data,es:data ;设定各段与段寄存器关联
start: ;程序入口处(类似C的main函数)
push ds ;压入ds
sub ax,ax ;ax = 0
push ax ;压入ax
mov ax,data ;ax = 数据段基址
mov ds,ax ; ds = ax
mov es,ax ;ds = ax
lea si,string1 ;si = string1的偏移地址
lea di,string2 ;di = string2的偏移地址
cld ;DF=0
mov cx,25 ;比较次数
repz cmpsb ;比较指令
jz match ;如果相同ZF=1
lea dx,mess2 ;dx = mess2 的偏移地址
jmp short disp ;跳到disp
match:
lea dx,mess1 ; dx = mess1 的偏移地址
disp:
mov ah,9 ;9号中断,显示一个一’$’结尾的字符串
int 21h
ret ;返回
main endp
code ends ;代码段结束
end start ;程序结束
另注:
MASM汇编程序设计的基本框架是:
data segment
;数据
data ends
stack segment
;堆栈
stack ends
code segment
assume cs:code,ds:data
start:
;代码
end start

汇编程序题目,求详解

嘿嘿 没人给你解答 俺来帮你做吧
解题分析如下:
1 START:MOV AX,01H
MOV BX,02H
MOV CX,02H
MOV DX,02H
为循环开始即初始化阶段 是4条传送指令 传送到结果是:
AX=01H BX=02H CX=02H DX=02H
其中CX为下一步循环的循环计数器 CX=02H 即表示要循环2次
2 第一次循环 执行一次下面的程序段
NXET: INC AX ;加1指令 AX=01H+1=02H
ADD BX,AX ;加法指令 BX=BX+AX=02H+02H=04H
SHR DX,1 ;算术右移指令 最高位补0 结果为DX=01H
LOOP NEXT ;循环次数减1 CX=02H-1=01H
第二次循环 再执行一次下面的程序段
NXET: INC AX ;加1指令 AX=02H+1=03H
ADD BX,AX ;加法指令 BX=BX+AX=04H+03H=07H
SHR DX,1 ;算术右移指令 最高位补0 结果为DX=00H
LOOP NEXT ;循环次数减1 CX=01H-1=00H

可知结果:
AX=03H BX=07H DX=00H CX=00H

呵呵 做完也没加分呀 满意后 就选择满意回答吧

汇编语言题目,求详解

MOV DI,OFFSET BUFF 取数组BUFF的首地址到DI寄存器中
MOV CX,000AH 设定循环次数
MOV BL,0 做计数器用,用来记录数组BUFF中为0的字节的个数,赋初值为0
GOON:MOV AL,byte ptr 将数组的BUFF的一个字节的数据放进AL寄存器中
AND AL,AL AL中的数据与AL中的数据做与运算,用来作为下一条跳转指令的跳转条件
JNZ NEXT 上一条指令运算不为0就跳转到标号NEXT处
INC BL 若 and al,al 这条指令的运算结果为0,bl寄存器就加1
NEXT:INC DI dl加1,dl最开始是数组BUFF的首地址,加1相当于指向下一个字节
LOOP GOON CX先减1,判断CX是否为0,若为0就跳出循环,不为0就循环,循环从标号GOON处开始
HLT 停机
BUFF DB 23H,54H,00H,83H,98H,36H,00H,49H,00H,73H
这段汇编代码的作用是判断单元大小为一字节的数组BUFF中有多少个字节为0,并将结果保存在BL寄存器中

汇编程序题,请高手解答一下

LEA SI, NUM1 ;算出NUM1的有效地址(SI指向NUM1第一个元素)
LEA DI, NUM2 ;算出NUM2的有效地址(DI指向NUM2第一个元素)
LEA BX, SUM ;算出SUM的有效地址(BX指向SUM第一个单元)
MOV CX, 4 ;将CX置4,即循环次数
AG: MOV AL, ;AG标记。取SI地址的内容(NUM1中的数)送到AL
ADD AL, ;将DI地址的内容(NUM2中的数)加到AL
MOV , AL ;将AL(两个数的和)放到以BX为地址的单元(即SUM,完成相加的操作)
INC SI ;SI指向NUM1下一个元素
INC DI ;DI指向NUM2下一个元素
INC BX ;BX指向SUM下一个单元
DEC CX ;CX--
JNZ AG ;CX如果不为0(没有循环到4次),跳到AG,否则继续执行,即结束程序

OK,关于汇编程序例题及讲解和汇编程序的内容到此结束了,希望对大家有所帮助。

汇编程序例题及讲解(汇编程序)

本文编辑:admin

更多文章:


send out用法及例句(send out是什么意思)

send out用法及例句(send out是什么意思)

各位老铁们好,相信很多人对send out用法及例句都不是特别的了解,因此呢,今天就来为大家分享下关于send out用法及例句以及send out是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 20:30

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

大家好,关于全球新冠肺炎疫情背景下航运发展很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决

2026年9月7日 17:10

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

大家好,关于matlab求解带字母参数方程组很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数的知识点,相信应该可以解决大家的一些困惑和问题,

2026年9月7日 16:30

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

本篇文章给大家谈谈oracle中的循环语句,以及下面哪个不是oracle程序设计中的循环语句 a for对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 15:30

多表查询怎么做(Excel技巧:如何多表同步筛选)

多表查询怎么做(Excel技巧:如何多表同步筛选)

各位老铁们好,相信很多人对多表查询怎么做都不是特别的了解,因此呢,今天就来为大家分享下关于多表查询怎么做以及Excel技巧:如何多表同步筛选的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 15:10

服装店网站网页设计(服装网站建设目标设计要看甲方)

服装店网站网页设计(服装网站建设目标设计要看甲方)

“服装店网站网页设计”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看服装店网站网页设计(服装网站建设目标设计要看甲方)!

2026年9月7日 14:10

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

大家好,电脑里2个系统怎么删除一个相信很多的网友都不是很明白,包括电脑开机显示有两个系统,如何删除一个也是一样,不过没有关系,接下来就来为大家分享关于电脑里2个系统怎么删除一个和电脑开机显示有两个系统,如何删除一个的一些知识点,大家可以关注

2026年9月7日 12:20

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

大家好,今天小编来为大家解答以下的问题,关于苹果手机代码大全,恢复更新固件iOS未知错误代码解决大全这个很多人还不知道,现在让我们一起来看看吧!

2026年9月7日 10:20

scrollthrough意思(“scroll”是什么意思)

scrollthrough意思(“scroll”是什么意思)

今天给各位分享“scroll”是什么意思的知识,其中也会对“scroll”是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 08:00

怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)

怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)

本篇文章给大家谈谈怎么激活keygen,以及注册机如何激活cad2008一个简单激活cad2008的方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站

2026年9月7日 06:30

最近更新

热门文章

dessert(dessert是什么意思)
2026-05-03 12:45:03 浏览:7
标签列表