我正在为我的计算机体系结构课程完成一项任务,而且我并不完全了解程序集。我应该从键盘输入一个字符串输入并检查它是否是回文。我不被允许使用INT 21h
。我将程序编写为db string value
而不是键盘输入,但我仍然无法使CMP
正常工作。我很确定我做错了。希望有人可以提供帮助。
#make_COM#
include emu8086.inc
org 100h
jmp init
msg db "kayak",0
init:
Mov SI,5
mov di,0
start:
mov al,msg[si]
dEC si
inc di
mov ah ,0eh
int 10h
cmp si, -1
jg start
check:
mov al, msg[si]
mov ah, msg[di]
cmp al, ah
jmp notpalin
inc si
dec di
cmp si, 5
jl check
palin:
call pthis
db "This is a palindrome", 0
jmp stop
notpalin:
call pthis
db "This is not a palindrome", 0
jmp stop
stop:
mov ah, 0
int 16h ; wait for any key....
ret ; return to operating system.
DEFINE_PTHIS
答案 0 :(得分:3)
您需要以4开始<ion-list id="page-list7" ng-show="VariableRadioToggle2">
<div ng-repeat="itemGrp in itemGroups">
<ion-item class="item-divider" id="page-list-item-divider32">{{itemGrp.name}}</ion-item>
<ion-toggle name="{{itemGrp.name}}" ng-click="clickedVariableRadio2(portion.selected)" ng-repeat="(key,portion) in itemGrp.Portions" ng-model="itemGrp.selected_item" ng-true-value="'{{key}}'" ng-false-value="">{{portion.name}}</ion-toggle>
</div>
</ion-list>
寄存器而不是5.使用数字5处理您不希望与BIOS电传打字功能一起显示的NULL字符。
您的程序开始检查部分将包含-1的SI
寄存器。这显然不是SI
的正确记忆参考。
比较2个字符时,需要使用条件跳转。你使用了一个总是跳跃的跳跃!
mov al, msg[si]
您可以在索引cmp al, ah
jNE notpalin
和SI
相互交叉后立即停止检查。
解决方案:
DI