问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

汇编语言 布尔运算 十六位转二位,再进行NOT操作

发布网友 发布时间:2022-04-23 01:07

我来回答

2个回答

热心网友 时间:2023-09-28 05:10

; 本程序在MASMPlus 1.2集成环境下通过编译,运行正确
.model tiny
Code Segment
Assume CS:Code,DS:code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
org 100h
Start: jmp Begin
Press_Key db 13,10,13,10,'The complated. Press any key to exit...$'
Prompt_Hex db 'please input a heximal number(for 4 bits):$'
Prompt_BIN db 13,10,'The binary number is: $'
Prompt_NotB db 13,10,'The NOT code: $'
Prompt_NotX db 13,10,'The result is :$'
; -------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr endp
; -------------------------------------
; 功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AL=转换后的ASCII码
AL_ASCII Proc Near
cmp al,10 ;AL<10?
jb @@To_ASCII ;AL<10,按数字处理
add al,7 ;AL>=10,按大写字母处理
@@To_ASCII: add al,'0' ;转换成相应的数字或大写字母
ret
AL_ASCII EndP
; -------------------------------------
; 功能:将AL中的字节数据转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AX=转换后的ASCII码
Byte_ASCII Proc Near
push cx
mov cx,4
xor ah,ah ;将AH置0
shl ax,cl ;将AX左移4位
shr al,cl ;将AL右移4位
xchg ah,al
call AL_ASCII ;调用子程序,将AL中的值转换成相应的ASCII码
xchg ah,al
call AL_ASCII
xchg ah,al
pop cx
ret
Byte_ASCII EndP
; -------------------------------------
; 功能:将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示
; 入口:AX
WordD_ASCII Proc Near
push dx
push ax
push ax
xchg ah,al
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
cmp al,'9'
jbe $+7
mov dl,'0'
call Output_Chr ;显示一个字符
mov dl,al
call Output_Chr ;显示一个字符
mov dl,ah
call Output_Chr ;显示一个字符
pop ax
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
mov dl,al
call Output_Chr ;显示一个字符
mov dl,ah
call Output_Chr ;显示一个字符
mov dl,'H'
call Output_Chr ;显示一个字符
pop ax
pop dx
ret
WordD_ASCII EndP
; -------------------------------------
Display_Binary Proc Near
mov cx,16 ;16位二进制数
@@Display_Bin: mov dl,'1' ;预置要显示的二进制字符
rol bx,1 ;循环左移1位
jc $+4 ;若进位标志置位,显示数字'1'
mov dl,'0' ;进位标志复位,显示数字'0'
mov ah,2 ;显示一个字符
int 21h
loop @@Display_Bin
mov dl,'B'
mov ah,2
int 21h
ret
Display_Binary EndP
; -------------------------------------
; 输入一个4位十六进制数,保存在16位寄存器BX中
Begin: Output Prompt_Hex ;提示输入一个4位十六进制数
mov cx,4
cld
Input_Hex: mov ah,1 ;输入一个字符
int 21h
cmp al,27 ;Esc?
jz Exit_Proc ;若是Esc键,结束程序
cmp al,'0' ;<'0'?
jb Input_Hex ;非法十六进制数,重新输入
cmp al,'9' ;>'9'?
ja $+6 ;>'9',看是否是a~f之间的字母
and al,0fh ;转换成二进制数
jmp Store_Bin
or al,20h ;转换成小写字母
cmp al,'a' ;<'a'?
jb Input_Hex ;非法十六进制数,重新输入
cmp al,'f' ;>'f'?
ja Input_Hex ;非法十六进制数,重新输入
and al,0fh
add al,9
Store_Bin: push cx
mov cx,4
shl bx,cl
or bl,al ;保存这个二进制数
pop cx
loop Input_Hex
; -------------------------------------
; 将其转换为二进制数的形式显示
Output Prompt_BIN ;提示显示对应的二进制数
call Display_Binary ;显示16位二进制数
; -------------------------------------
; 对该十六进制数进行NOT操作并以二进制数的形式显示
Output Prompt_NotB ;提示显示取反操作后对应的二进制数
not bx ;取反
call Display_Binary ;显示16位二进制数
; -------------------------------------
; 以十六进制数的形式显示
Output Prompt_NotX ;提示显示取反操作后对应的十六进制数
mov ax,bx
call WordD_ASCII ;将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch ;结束程序
int 21h
Code Ends
END Start

热心网友 时间:2023-09-28 05:11

;
本程序在MASMPlus
1.2集成环境下通过编译,运行正确
.model
tiny
Code
Segment
Assume
CS:Code,DS:code
;
-------------------------------------
;
功能:显示指定地址(Str_Addr)的字符串
;
入口:
;
Str_Addr=字符串地址(要求在数据段)
;
用法:
Output
Str_Addr
;
用法举例:Output
PromptStr
Output
MACRO
Str_Addr
lea
dx,Str_Addr
mov
ah,9
int
21h
EndM
;
-------------------------------------
org
100h
Start:
jmp
Begin
Press_Key
db
13,10,13,10,'The
complated.
Press
any
key
to
exit...$'
Prompt_Hex
db
'please
input
a
heximal
number(for
4
bits):$'
Prompt_BIN
db
13,10,'The
binary
number
is:
$'
Prompt_NotB
db
13,10,'The
NOT
code:
$'
Prompt_NotX
db
13,10,'The
result
is
:$'
;
-------------------------------------
;
功能:输出一个字符
;
入口:dl=要显示的字符
Output_Chr
proc
Near
push
ax
mov
ah,02h
int
21h
pop
ax
ret
Output_Chr
endp
;
-------------------------------------
;
功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码
;
入口:AL
;
出口:AL=转换后的ASCII码
AL_ASCII
Proc
Near
cmp
al,10
;AL<10?
jb
@@To_ASCII
;AL<10,按数字处理
add
al,7
;AL>=10,按大写字母处理
@@To_ASCII:
add
al,'0'
;转换成相应的数字或大写字母
ret
AL_ASCII
EndP
;
-------------------------------------
;
功能:将AL中的字节数据转换成十六进制显示的ASCII码
;
入口:AL
;
出口:AX=转换后的ASCII码
Byte_ASCII
Proc
Near
push
cx
mov
cx,4
xor
ah,ah
;将AH置0
shl
ax,cl
;将AX左移4位
shr
al,cl
;将AL右移4位
xchg
ah,al
call
AL_ASCII
;调用子程序,将AL中的值转换成相应的ASCII码
xchg
ah,al
call
AL_ASCII
xchg
ah,al
pop
cx
ret
Byte_ASCII
EndP
;
-------------------------------------
;
功能:将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示
;
入口:AX
WordD_ASCII
Proc
Near
push
dx
push
ax
push
ax
xchg
ah,al
call
Byte_ASCII
;将AL中的字节数转换成十六进制显示的ASCII码
cmp
al,'9'
jbe
$+7
mov
dl,'0'
call
Output_Chr
;显示一个字符
mov
dl,al
call
Output_Chr
;显示一个字符
mov
dl,ah
call
Output_Chr
;显示一个字符
pop
ax
call
Byte_ASCII
;将AL中的字节数转换成十六进制显示的ASCII码
mov
dl,al
call
Output_Chr
;显示一个字符
mov
dl,ah
call
Output_Chr
;显示一个字符
mov
dl,'H'
call
Output_Chr
;显示一个字符
pop
ax
pop
dx
ret
WordD_ASCII
EndP
;
-------------------------------------
Display_Binary
Proc
Near
mov
cx,16
;16位二进制数
@@Display_Bin:
mov
dl,'1'
;预置要显示的二进制字符
rol
bx,1
;循环左移1位
jc
$+4
;若进位标志置位,显示数字'1'
mov
dl,'0'
;进位标志复位,显示数字'0'
mov
ah,2
;显示一个字符
int
21h
loop
@@Display_Bin
mov
dl,'B'
mov
ah,2
int
21h
ret
Display_Binary
EndP
;
-------------------------------------
;
输入一个4位十六进制数,保存在16位寄存器BX中
Begin:
Output
Prompt_Hex
;提示输入一个4位十六进制数
mov
cx,4
cld
Input_Hex:
mov
ah,1
;输入一个字符
int
21h
cmp
al,27
;Esc?
jz
Exit_Proc
;若是Esc键,结束程序
cmp
al,'0'
;<'0'?
jb
Input_Hex
;非法十六进制数,重新输入
cmp
al,'9'
;>'9'?
ja
$+6
;>'9',看是否是a~f之间的字母
and
al,0fh
;转换成二进制数
jmp
Store_Bin
or
al,20h
;转换成小写字母
cmp
al,'a'
;<'a'?
jb
Input_Hex
;非法十六进制数,重新输入
cmp
al,'f'
;>'f'?
ja
Input_Hex
;非法十六进制数,重新输入
and
al,0fh
add
al,9
Store_Bin:
push
cx
mov
cx,4
shl
bx,cl
or
bl,al
;保存这个二进制数
pop
cx
loop
Input_Hex
;
-------------------------------------
;
将其转换为二进制数的形式显示
Output
Prompt_BIN
;提示显示对应的二进制数
call
Display_Binary
;显示16位二进制数
;
-------------------------------------
;
对该十六进制数进行NOT操作并以二进制数的形式显示
Output
Prompt_NotB
;提示显示取反操作后对应的二进制数
not
bx
;取反
call
Display_Binary
;显示16位二进制数
;
-------------------------------------
;
以十六进制数的形式显示
Output
Prompt_NotX
;提示显示取反操作后对应的十六进制数
mov
ax,bx
call
WordD_ASCII
;将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示
;
-------------------------------------
Exit_Proc:
Output
Press_Key
;提示操作完成,按任意键结束程序
mov
ah,1
int
21h
mov
ah,4ch
;结束程序
int
21h
Code
Ends
END
Start
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 2019版的PPT中布尔运算在哪? 2010版的3dMAX的布尔运算差集的具体步骤 思科认证怎样阿? 2010中望cad布尔运算在哪里哦?我在修改里面没找到哦?能否赐教 银行的转账凭证可以证明我借钱给对方吗? ccie认证考试试题是英文的吗,我英文不好但是能熟练配置交换路由设备... 三维的技术功能 cisco、H3C、HUAWEI 认证考试,是英文还是中文的???都要参加培训才能考试... ppt2010用隐藏的形状布尔运算如何实现图片的任意抠图 借款条怎么写合法? 思科认证是考英语的好还是中文的好? PPT2010布尔运算点击无反应怎么办 银行转账时,在汇款用途一栏写借款,能否算“借条”? .计算机语言中的布尔(BOOL).字节(BYTE)。字(WORD),不知这是哪本书上的内容?如果考试会怎么考 CCNA试题是全英文么? 银行转账归还欠款怎么写备注 ppt2010添加了布尔运算,但是却无法使用,功能上显示是灰色的 思科(Cisco)认证的考试需要怎样英文水平? 如何写银行转账的借条 SolidWorks2010装配体中如何进行布尔运算? 怎么样在word里画行吊图? cad绘三维图时布尔运算老是出错,什么原因? ppt两个图形相交,然后把其中有个图形移开,另外一个图形就有了缺口。。。我不知道怎么表达,希望大神指点 word 2003有 合并形状功能么?在哪?如果没有那word多少有合并形状功能? 3D max中,线条经可渲染线条后,不能与实体进行布尔运算,提示是无效布尔运算, 求解释。 我的苹果笔记本macpro2019款 数据误删了非常重要 是固态硬盘有没有大神能够解决的? macbook2016主板坏了硬盘如何恢复数据 告诉你MAC格式化硬盘后文件的恢复方法! macbookpromacbookpro硬盘宗卷删了找不回来怎么办? 在Mac电脑对磁盘进行格式化了,怎么恢复文件? 苹果电脑格式化硬盘后,数据能恢复吗 mac系统硬盘分区丢失有办法恢复吗? 防毒面具如何使用??? 防毒面具的正确使用方法? 防毒面具的使用方法是什么?防毒面具应该如何佩戴? 防毒面具的使用方法,防毒面具怎么使用,防毒面具的注意事项 怎样使用防毒面具? 如何正确佩戴防毒面具? 防毒面具如何正确佩戴? 防毒面具使用方法?防毒面具特征有哪些